java中集合的底层实现:
list(有序,可重复)
|
名称 |
底层结构 |
特点 |
用途 |
|
ArrayList |
数组 |
线程不安全,效率高 |
查询快,增删慢 |
|
LinkedList |
双向链表 |
线程不安全,效率高 |
查询慢,增删快 |
|
Vector |
数组 |
线程安全,效率低 |
查询快,增删慢 |
Set(无序,不重复)
|
名称 |
底层结构 |
特点 |
|
HashSet |
HashMap |
由哈希表保证元素唯一 |
|
LinkedHashSet |
链表和哈希表 |
由链表保证元素有序;由哈希表保证元素唯一
|
|
TreeSet |
红黑树 |
自然排序 比较器排序 如何保证元素唯一性的呢? 根据比较的返回值是否是0来决定
|
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
Map(双列集合,Map集合的数据结构仅仅针对键有效,与值无关,存储的是键值对形式的元素,键唯一,值可重复)
|
名称 |
底层结构 |
特点 |
|
HashMap |
哈希表 |
线程不安全,效率高 |
|
LinkedHashMap |
链表和哈希表 |
由链表保证元素有序。 由哈希表保证元素唯一。
|
|
Hashtable
|
哈希表 |
线程安全,效率低 |
|
TreeMap |
红黑树(是一种自平衡的二叉树) |
如何保证元素唯一性呢? 根据比较的返回值是否是0来决定 如何保证元素的排序呢? 两种方式 自然排序(元素具备比较性) 让元素所属的类实现Comparable接口 比较器排序(集合具备比较性) 让集合接收一个Comparator的实现类对象 |