常用的集合

1 篇文章 0 订阅
1 篇文章 0 订阅

**什么是集合:(只能存储对象,对象类型可以不一样)长度可变,可在多数情况下使用。Java集合框架主要包括两种类型的容器,一种是集合(Collection),另一种是图(Map)。
Collection接口又有3种子类型,List、Set和Map,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等。Map常用的有HashMap,LinkedHashMap等。**

**一.Set集合(继承了Collection接口)(一般企业开发用的最多)**

        1.Set 集合属于单列集合,不允许包含重复元素;
        2.判断元素是否重复的标准为对象的 equals 方法,存在时返回 false,不存在返回 true;
        3.元素的排序规则,由相应的实现类决定,分为无序、元素大小排序、写入顺序排序;
        4.初始化大小,扩容参考 HashMap。
        5.Set的接口实现有:HashSet,TreeSet,LinkedSet
                5.1
                    Set 接口继承Collection,用于存储不含重复元素的集合。几乎所有的Set实现都是基于同类型Map的,简单地说,Set是阉割版的Map。
                    每一个Set内都有一个同类型的Map实例(CopyOnWriteArraySet除外,它内置的是CopyOnWriteArrayList实例),Set把元素作为key存储在自己的Map实例中,value则是一个空的Object。
                    Set的常用实现也包括 HashSet、TreeSet、LinkedSet等,原理和对应的Map实现完全一致,

**二.List(继承了Collection接口)(一般查询用的最多)**

        1.List 集合属于单列、有序的、允许元素重复、可以为 null 的集合;
        2.List 接口的实现类主有:ArrayList、LinkedList、Vector。
                2.1 ArrayList(一般用来查询):
                        ArrayList的扩容是当前的1.5倍(大于默认值10的时候)。
                        优点:查询块
                        缺点:就是LinkedList的优点
                2.2 LinkedList
                        优点:增删改块
                        缺点:就是ArrayList的优点
                2.3 Vector
                        Vector是线程安全的。
                        Vector大部分基本方法都是synchronized的,性能低于ArrayList。
                        Vector可以定义数组的长度扩容的因子。而ArrayList不能。
        3.二者的遍历效率接近,但需要注意,遍历LinkedList时应用iterator方式,不要用get(int)方式,否则效率会很低。

**三.Queue队列(先进先出)**

         关系图

                   
                        
**四.Iterable**

                1.实现Iterable接口类可以增强for等
                2.实现Iterable接口的集合类必须提供一个名为Iterator()的方法,该方法的返回值必须为Iterable
    


**五.Map(键值对)**

 

        1.Map 集合属于双列Key-value键值对的集合,Key不允许重复,是否允许为 null 根据实现类而定,Value 随意;
        2.Map 接口的实现类有:HashMap、LinkedHashMap、TreeMap、Hashtable、ConcurrentHashMap。
                2.1 HashMap
                      HashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类。在平时的开发中,HashMap的使用还是比较多的。
                      我们知道ArrayList主要是用数组来存储元素的,LinkedList是用链表来存储的。
                2.2 LinkedHashMap
                      LinkedHashMap继承自HashMap,它主要是用链表实现来扩展HashMap类,HashMap中条目是没有顺序的,但是在LinkedHashMap中元素既可以按照它们插入图的顺序排序,也可以按它们最后一次被访问的顺序排序。
                2.3 TreeMap
                      按照比较结果的升序保存建。
                2.4 Hashtable(哈希表又叫散列队)
                      1.继承Dictionary
                      2 默认的长度为11扩容因子是当前长度的百分之75。
                      3.查询块,增删该慢
                2.5 ConcurrentHashMap
                      继承AbstractMap,Concurrent,并发,从名字就可以看出来ConcurrentHashMap是HashMap的线程安全版。同HashMap相比,ConcurrentHashMap不仅保证了访问的线程安全性,而且在效率上与HashTable相比,也有较大的提高。

关系图

      

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值