Java里的集合:List/Set/Map

首先对List/Set/Map进行说明:

1. 三者都是接口, List和Set继承至Collection接口,Map为独立的接口

2. List是无序的、Set是有序的。Map中既有有序的实现类也有无序的实现类。

一、List

1. 无序

2. List包含:ArrayList、LinkedList、Vector。

  * ArrayList: 底层结构为数组、线程不安全

  * LinkedList: 底层结构为链表、线程不安全

  * Vector: 底层结构为数组、线程安全

3. 补充说明:

  *数组实现:查询快,增加删除操作慢

  * 链表实现:查询慢,增加删除操作快

二、Set

1. 有序

2. Set包含:HashSet、LinkedHashSet、TreeSet

  * HashSet: 底层结构为哈希表

  * LinkedHashSet: 底层结构为链表+哈希表  (FIFO)

  * TreeSet: 底层结构为红黑树

3. 补充说明:

  * 哈希表可以保证唯一性 (hashCode()和equals())

  * 链表可以保证有序性 

  * 红黑树可以保证有序性和唯一性 (有序性:平衡二叉树;唯一性:compare(Object o)的返回值是否为0来判断) 参考来源

三、Map

1. TreeMap 有序、HashMap和HashTable无序

2. HashMap与HashTable的区别

  * HashTable是同步的、线程安全,但是效率会慢

  * HashMap是非同步的。线程不安全,效率较快

  * HashTable不允许空值、HashMap允许空值

  * HashTable的父类为Dictionary,HashMap的父类为AbstractMap

参考来源:

1. https://blog.csdn.net/zhangqunshuai/article/details/80660974

2. https://blog.csdn.net/dch9210/article/details/50951690

猜你喜欢

转载自www.cnblogs.com/yishilin/p/10875965.html