java Collection&Map集合

Collection集合和Map集合的区别:

Collection集合:每个元素可以存储一条信息,值。

Map集合:每个元素可以存储两条信息,键值对。

Collection:

该接口中的常用方法有:

Collection集合分为List集合、Set集合和Queue集合

List集合的特点:有序的集合,元素有下标,从0开始。可以存储重复的元素。

Set集合的特点:无序的集合。不可以存储重复的元素。

List:

List的实现类有ArrayList(最常用)、Vector、LinkedList

三者的区别为:

ArrayList采用数组的结构存储元素,查询比较快,增删改较慢。线程不安全,效率高。

Vector采用数组的结构存储元素,查询比较快,增删改较慢。线程安全,效率低。

LinkedList采用链表结构存储元素,查询较慢,增删改较快。线程不安全,效率高。

List集合的四种遍历方式:

①通过下标遍历

        for (int i = 0; i < a.size(); i++) {
            System.out.println(a.get(i));
        }

②使用增强for

        for(Object   o : a){
            System.out.println(o);
        }

③使用迭代器Iterator

        Iterator it = a.iterator();
        while(it.hasNext()){
            Object o = it.next();
            System.out.println(o);
        }

④用forEach方法遍历(Lamda表达式)

        a.forEach((o)->{
            System.out.println(o);
        });

Set:

Set集合的实现类有HashSet(最常用)、TreeSet、LinkedHashSet

三者的区别:

HashSet:

不能保证元素的排列顺序,顺序有可能发生变化
线程不是同步的
集合元素可以是null,但只能放入一个null

根据元素的hashCode值来决定元素的存储位置

去重的方法:通过equals方法比较相等,并且两个对象的hashCode()值也相等。

TreeSet:

有序,支持定制排序

去重的方法:两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0

LinkedHashSet :

根据元素的hashCode值来决定元素的存储位置

遍历的时候是通过插入的顺序打印的

是链表结构

Set集合的遍历(因为Set是无序的,所以少了一种fori的方式,有三种)

①增强for

②Iteration

③forEach

Map:

该接口中的常用方法有:

Map集合的实现类有HashMap(最常用) 、HashTable 、 TreeMap

三者的区别:

HashMap:

允许使用 null 值和 null 键

HashTable:

不允许使用 null 值和 null 键

TreeMap:

允许使用null值、但不允许使用null键

三种常规Map性能:
HashMap:适用于在Map中插入、删除和定位元素。
HashTable:单线程环境下,性能低,适用于完全的线程安全。
Treemap:适用于按自然顺序或自定义顺序遍历键(key)。

总结:
HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap,仅在你需要完全的线程安全的时候使用Hashtable。

Map集合的遍历 有三种

①获取所有元素的值,以Collection集合返回

        Collection vs = map.values();
        vs.forEach((v)->{
            System.out.println(v);
        });

②用Map.Entry保存所有的键值对,保存到Set集合中遍历

        Set set = map.entrySet();
        for(Object   o:set){
            Map.Entry   entry =(Map.Entry)o;
            System.out.println(entry.getKey()+","+entry.getValue());
        }

③找到所有的键,再通过键找值

        Set ks1 = map.keySet();
        for(Object  k:ks1){
            Object v = map.get(k);
            System.out.println(k+"="+v);
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值