java中集合的底层实现

645 阅读1分钟

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的实现类对象