JavaSE学习之集合类的总结

在这里插入图片描述
集合类分成Collection与map两个大类,Collection接口下的子类中存的都是单个的元素,Map接口下的子类存储的所有元素都是以键值对的形式储存的。
——————————————————————————————————————————
Collection接口

  • Set接口(不能存储重复的元素)
    a:HashSet,用哈希表结构存储数据,存储的方式的无序的
    b:LinkedHashSet,用哈希表与链表结合的方式存储数据,有序的存储
    c:TreeSet,将存储的元素按照自然顺序排序存储
  • List接口(可以存储重复的元素)
    a:ArrayList,以数组形式存储数据,查询快增删慢
    b:LinkedList,以链表形式存储数据,查询慢增删快
    c:Vector,数组结构。线程安全的

Map接口

  • HashMap 储存结构为哈希表结构,元素储存是无序的
  • LinkedHashMap 是HashMap的子类,采用哈希表+链表的结构储存,保证元素储存的顺序一致。
    ——————————————————————————————————
    对于用哈希表结构参与储存的结构,如:
    HashSet,HashMap,LinkedHashSet,LinkedHashMap等,都是需要考虑重写hashcode与equals方法来判断是否包含重复的值(对于Map,则是保证键不重复),对于储存的元素类型是自定义的类型,需要重写hashcode()和equals()方法。
    先判断hashcode()值是否相同,若不同,则不是同一元素,可以储存;若相同,继续比较equals方法,若返回true,则为相同元素,若为false,则不同可以储存。

对ArrayList集合,其有contains方法验证是否包含相同的元素,对储存自定义的类型,同样需要重写equals方法,否则比较的为地址值。

——————————————————————————————————
关于Map的遍历问题

  • 第一种方式:通过生成Entry键值对,利用entrySet得到set集合,再利用迭代器,通过遍历迭代器,得到每一个键值对对象,在对每一个对象取键和值

     Map<Integer,String> map=new HashMap<>();
     map.put(1,"Java");
    map.put(2,"love");
     map.put(3,"bigdata");
     Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
     Iterator<Map.Entry<Integer, String>> iterator = entrySet.iterator();
     while (iterator.hasNext()){
         Map.Entry<Integer, String> entry=iterator.next();
         Integer key = entry.getKey();
         String value = entry.getValue();
         System.out.print(key+":"+value);
     }
    
  • 第二种:通过KeySet得到所有键的set集合,用迭代器取出每一个键的值,然后根据键找到值

   Map<Integer,String> map=new HashMap<>();
        map.put(1,"Java");
       map.put(2,"love");
        map.put(3,"bigdata");
        Set<Integer> keySet = map.keySet();
        Iterator<Integer> iterator = keySet.iterator();
        while (iterator.hasNext()){
            Integer key = iterator.next();
            String value = map.get(key);
            System.out.print(key+": "+value);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值