集合框架中的接口。
哪些集合可以存放null?
除了TreeSet和TreeMap还有HashTable不能存放null,会报空指针异常。
- List的主要特点就是有序性和元素的可空性。 ArrayList(数组实现)和LinkedList(双向链表实现)
- Set主要特性是唯一性。自动排序。HashSet,LinkedHashSet,TreeSet
- Queue 特性是队列
- Map健值对 继承自Object
List,Set,Queue,Map参考链接
Set (无序,唯一)
HashSet
- 底层数据结构是哈希表
- 哈希表依赖两个方法 hashCode()和equals()
- 执行顺序: 首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
true:说明元素重复不添加
false:直接添加到集合
否: 直接添加到集合
LinkedHashSet
- 底层数据结构由链表和哈希表组成
- 由链表保证元素有序
- 由哈希表保证元素唯一
TreeSet
- 底层数据结构是红黑树
- 唯一性是根据比较返回值是否是0来决定
- 排序两种方式
自然排序:让元素所属的类实现Comparable接口
比较器排序:让集合接受一个Comparator的实现类对象
Map
- Map集合的数据结构仅仅对键有效与值无关
- 存储的是健值对的形式的元素,键唯一,值可重复
HashMap
- 底层数据结构是哈希表,线程不安全,效率高
LinkedHashMap
- 底层数据结构由链表和哈希表组成
HashTable
- 底层数据结构是哈希表,线程安全,效率低
TreeMap
- 底层数据结构是红黑树
集合选取原则
是否是健值对象形式:
是:Map
键是否需要排序:
是:TreeMap
否:HashMap
不知道就用HashMap
否:Collection
元素是否唯一
是:Set
元素是否需要排序
是:TreeSet
否:HashSet
不知道就用HashSet
否:List
要安全吗:
是:Vector
否:ArrayList或者LinkedList
增删多:LinedList
查询多:ArrayList
不知道就是用ArrayList