栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

有C/C++基础的Java学习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有C/C++基础的Java学习

java学习的第六天: 4.2.5 泛型:

存储一个对象到集合后,集合会“忘记”这个对象的类型,当该对象从集合中取出时,这个对象的编 译类型就变成了 Object类型。那么在取出元素时,如果进行强制类型转换就很容易抛出异常。下面通过案例演示这种情况,如文件4-4所示。

package com.itheima.Example09;
import java.util.*;
public class example09 {
    public static void main(String[] args) {
    ArrayList list=new ArrayList();
        list.add("zhangsan");
        list.add("lisi");
        list.add(18);                    //添加Integer类型
        for(Object obj: list){
            String str=(String) obj;     //强制转换成String类型
        }
    }

结果如下:


在取出这些元素时,都将它们强制转换为 String类型,由于Integer对象不能转换为 String 类型,因此在程序运行时抛出了类转换异常。

为了解决这个问题,Java引入了“参数化类型(parameterizedtype)”这个概念,即泛型,它可以限定方法操作的数据类型,在定义集合类 时,使用“<参数化类型>”的方式指定该类中方法操作的数据类型。

ArrayList<参数化类型>list=new ArrayList<参数化类型>();
将  ArrayList list=new ArrayList();替换成  ArrayList list=new ArrayList();

将得到以下结果:

4.3set接口: 4.3.1 set接口简介

Set接口继承自 Collection接口,与 Collection接口中的方法基本一致,没有对Collection接口进行功能上的扩充,但比 Collection接口更加严格。与 List接口不同的是,Set接口中的元素无序,并且都会以某种规则保证存入的元素不会出现重复。 Set接口主要有两个实现类,分别是 HashSet和 TreeSet。

4.3.2Hashset集合:

HashSet按 Hash算法存储集合中的元素,(根据对象的哈希值确定元素在集合中的存储位置)因此具有很好的存取和查找性能,并且存储的元素是无序的和不可重复的。

package com.itheima.example11;

import java.util.*;
public class example11 {
    public static void main(String[] args) {
        HashSet hashSet =new HashSet();    //创建HashSet集合
        hashSet.add("zhangsan");           
        hashSet.add("lisi");
        hashSet.add("wangwu");
        hashSet.add("lisi");                //添加重复元素
        Iterator it=hashSet.iterator();     //得到Iterator对象
        while(it.hasNext()){                //通过 while 循环,判断集合中是否有元素
            Object obj=it.next();           //如果有元素,则使用迭代器的 next()方法获取元素
            System.out.println(obj);
        }
    }
}

结果如下:

**注意:**HashSet集合不出现重复的元素的原因,是因为在向Set中添加对象时,会先调用此对象所在类的hashCode()方法,计算此对象的哈希值,此哈希值决定了此对象在 Set 中的存储位置。若此位置之前没有对象存储,则将这个对象直接存储到此位置。若此位置 已有对象存储,再通过equals()比较这两个对象是否相同,如果相同,则后一个对象就不能 再添加进来

4.4map接口: 4.4.1map接口简介:

Map集合是一种双列集合,集合中的每个元素都包含一个键对象Key和一个值对象Value,键和值是一一对应的关系,称为映射。也就是说,根据键就能找到对应的值,类似于生活中一张身份证对应一个人一样。

方 法 声 明功 能 描 述
Object remove(int index)删除index索引处的元素
void add(int index,Object element)将元素element插入到 List集合的index处
boolean addAll(int index,Collection c)将集合c所包含的所有元素插入到 List集合的index处
Object get(int index)返回集合索引index处的元素
Object set(int index,Object element)将索引index处元素替换成element对象,并将替换后的元素返回
int indexOf(Object o)返回对象o在 List集合中出现的位置索引
int lastIndexOf(Object o)返回对象o在 List集合中最后一次出现的位置索引
List subList(int fromIndex,int toIndex)返回从索引fromIndex(包括)到toIndex(不包括)处所有元素集合组成的子集合
4.4.2 HashMap集合:

HashMap集合是基于哈希表的 Map接口的实现,它用于存储键值映射关系,但不保证映射的顺序

package com.itheima.example11;

import java.util.*;
public class example11 {
    public static void main(String[] args) {
    	HashMap hashMap =new HashMap();              //创建 HashMap 集合
        hashMap.put("001","zhangsan");               //存储键和值
        hashMap.put("002","lisi");
        hashMap.put("003","wangwu");
        Set keySet=hashMap.keySet();                 //获取键的集合
        Iterator it= keySet.iterator();              //迭代键的集合
        while(it.hasNext()){ 
            Object key=it.next();
            Object value=hashMap.get(key);           //获取每个键所对应的值
            System.out.println(key+"="+value);
        }
    }
}

运行结果:

首先调用 HashMap集合的 KeySet()方法,获得存储 Map中所有键的 Set集合,然后通过Iterator迭代 Set集合的每一个元素,即每一个键,最后通过调用 get (Stringkey)方法,根据键获取对应的值

package com.itheima.example11;

import java.util.*;
public class example11 {
    public static void main(String[] args) {
         HashMap hashMap =new HashMap();
        hashMap.put("001","zhangsan");
        hashMap.put("002","lisi");
        hashMap.put("003","wangwu");
        Set entrySet=hashMap.entrySet();
        Iterator it= entrySet.iterator();
        while(it.hasNext()){
            Map.Entry entry=(Map.Entry)it.next(); //获取集合中键值对映射关系
            Object key=entry.getKey(); //获取 Entry 中的键
            Object value=entry.getValue(); //获取 Entry 中的值
            System.out.println(key+"="+value);
        }
    }
}

4.4.3 Properties 集合:

Properties主要用于存储字符串类型的键和值,由于 Properties类实现了 Map接口,因此,Properties类本质上是一种简单的 Map集合。在实际开发中,经常使用 Properties集合存取应用的配置项。

代码如下:

针对字符串的存取提供了两个专用的方法:setProperty() 和getProperty()。其中,setProperty()方法用于将配置项的键和值添加到 Properties集合 中,getProperty()方法用于根据键获取对应的值。在第10行代码中通过调用 Properties的 stringPropertyNames()方法得到一个所有键的 Set集合,然后在遍历所有的键 时,通过调用getProperty()方法获得键所对应的值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429467.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号