Java集合中List,Set以及Map的所有子类及实现等集合体系详细解析和框架图展示(最详细)

Collections是用于操作集合的工具类,Collection是集合的架构。

完整的架构为:

  • List、Set、Map都是接口,前两个继承至Collection接口,Map为独立接口
  • Set下有HashSet,LinkedHashSet,TreeSet
  • List下有ArrayList、Vector、LinkedList
  • Map下有HashTable、LinkHashMap、HashMap、TreeMap
  • Collection接口下还有个Queue接口,有PriorityQueue类

 

Queue接口与List、Set同一级别,都是继承了Collection接口。

 

总结:

Collection接口:

一、List有序,可重复

  • ArrayList

优点:底层数据结构是数组,查询快,增删慢。

缺点:线程不安全,效率高

  • Vector

优点:底层数据结构是数组,查询快。增删慢。

缺点:线程安全,效率低

Stack继承自Vector,实现一个后进先出的堆栈。

  • LinkedList

优点:底层数据结构是链表,查询慢,增删快。

缺点:线程不安全,效率高

 

二、Set无序,唯一 (排序就用TreeSet或者LinkeHashSet 否则就HashSet)

  • HashSet (无序,唯一)

是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束 。

  • LinkeedHashSet (FIFO插入有序,唯一)

使用链表扩展实现HashSet类,支持对元素的排序

          • 1.由链表保证元素有序
          • 2.由哈希表保证元素唯一
  • TreeSet (唯一,有序)

是红黑树实现的,Treeset中的数据是自动排好序的,不允许放入null值 。

如何保证元素排序的呢?

自然排序

比较器排序

2.如何保证元素唯一性的呢?

根据比较的返回值是否是0来决定

 

三、Map键值对(TreeMap是有序的,HashMap和HashTable是无序的。Hashtable的方法是同步的,HashMap的方法不是同步的。Hashtable是线程安全的,HashMap不是线程安全的HashMap效率较高,Hashtable效率较低。)

 

  • HashMap

存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

  • Hashtable

Hashtable是线程安全的,其他的和HashMap相似。

  • LinkedHashMap

保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

  • TreeMap-->SortedMap

 TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。不允许key值为空,非同步的;

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值