专业的JAVA编程教程与资源

网站首页 > java教程 正文

java集合类汇总表(java集合类详解)

temp10 2024-11-17 01:58:49 java教程 11 ℃ 0 评论



java集合类汇总表(java集合类详解)

特 性


集合名称

超类或接口

关键特性

线性安全

线性安全机制

是否有序

排序验证

排序策略

底层数据结构

是否允许元素重复

ArrayList

AbstractList->AbstractCollection->Collection->Iterable

动态数组,适合随机访问get和set;


ArrayList插入:1,3,5,2

插入顺序

动态数组

允许

List->Collection->Iterable

不适合大批量插入数据,因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。

->1->3->5->2

LinkedList

AbstractSequentialList->AbstractList->AbstractCollection->Collection->Iterable

基于链表,add和remove有优势,对于随机访问get和set,ArrayList绝对优于LinkedList,因为LinkedList要移动指针。


LinkedList插入:1,3,5,2

插入顺序

链表

允许

List->Collection->Iterable

->1->3->5->2

HashSet

AbstractSet->AbstractCollection->Collection->Iterable



HashSet插入:1,3,5,2

哈希表

不允许

Set->Collection->Iterable

->3->2->1->5

TreeSet

AbstractSet->AbstractCollection->Collection->Iterable



TreeSet插入:1,3,5,2

二叉排序树

红黑树。(是一种自平衡的二叉树)

不允许

NavigableSet->SortedSet->Set->Collection->Iterable

->1->2->3->5

(默认:插入值升序)

LinkedHashSet

HashSet->Set->Collection->Iterable



LinkedHashSet插入:1,3,5,2

插入顺序

链表和哈希表组成。 由链表保证元素有序。 由哈希表保证元素唯一。

不允许

->1->3->5->2

Vector

List->Collection->Iterable

底层数据结构是数组,查询快,增删慢

synchronized

Vector插入:1,3,5,2

插入顺序

动态数组

允许

线程安全,效率低

->1->3->5->2

Stack

Vector->List->Collection->Iterable


synchronized

Stack插入:1,3,5,2

插入顺序

动态数组

允许

->1->3->5->2

HashMap

AbstractMap->Map



HashMap插入:1,3,5,2


哈希表

使用key-value来映射和存储数据,key必须唯一,value可以重复

3-->3-key.hashCode=51

2-->2-key.hashCode=50

1-->1-key.hashCode=49

5-->5-key.hashCode=53

LinkedHashMap

HashMap->AbstractMap->Map



LinkedHashMap插入:1,3,5,2

插入顺序

由双向链表和哈希表组成。 由链表保证元素有序。 由哈希表保证元素唯一。

使用key-value来映射和存储数据,key必须唯一,value可以重复

1-->1-key.hashCode=49

3-->3-key.hashCode=51

5-->5-key.hashCode=53

2-->2-key.hashCode=50

ConcurrentHashMap

AbstractMap->Map


分段加锁

ConcurrentHashMap插入:1,3,5,2


Segment数组结构和HashEntry数组结构组成

使用key-value来映射和存储数据,key必须唯一,value可以重复

ConcurrentMap->Map

1-->1-key.hashCode=49


5-->5-key.hashCode=53


3-->3-key.hashCode=51


2-->2-key.hashCode=50

TreeMap

AbstractMap->Map



TreeMap插入:1,3,5,2

二叉排序树-红黑树

红黑树

使用key-value来映射和存储数据,key必须唯一,value可以重复

NavigableMap->SortedMap->Map

1-->1-key.hashCode=49

(默认:插入值升序


2-->2-key.hashCode=50



3-->3-key.hashCode=51



5-->5-key.hashCode=53


WeakHashMap

AbstractMap->Map

弱引用(WeakReference)


WeakHashMap插入:1,3,5,2


哈希表

使用key-value来映射和存储数据,key必须唯一,value可以重复

它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove()或者clear()方法。

5-->5-key.hashCode=53

WeekHashMap 的这个特点特别适用于需要缓存的场景。在缓存场景下,由于内存是有限的,不能缓存所有对象;对象缓存命中可以提高系统效率,但缓存MISS也不会造成错误,因为可以通过计算重新得到。

1-->1-key.hashCode=49


2-->2-key.hashCode=50


3-->3-key.hashCode=51

HashTable

Dictionary


synchronized

HashTable插入:1,3,5,2


哈希表

使用key-value来映射和存储数据,key必须唯一,value可以重复

Map

5-->5-key.hashCode=53


3-->3-key.hashCode=51


2-->2-key.hashCode=50


1-->1-key.hashCode=49

IdentityHashMap

AbstractMap->Map

在IdentityHashMap中,当且仅当两个key严格相等(key1==key2:即内存地址要相等)时,IdentityHashMap才认为两个key相等;相对于普通HashMap而言,只要key1和key2通过equals()方法返回true,且它们的hashCode值相等即可。


IdentityHashMap插入:1,3,5,2


哈希表

使用key-value来映射和存储数据,key必须唯一,value可以重复

3-->3-key.hashCode=51

2-->2-key.hashCode=50

1-->1-key.hashCode=49

5-->5-key.hashCode=53

EnumMap

Enum



EnumMap插入:1,3,5,2

插入顺序

动态数组

使用key-value来映射和存储数据,key必须唯一,value可以重复

AbstractMap->Map

{SPRING=1, SUMMER=3, FAIL=5, WINTER=2}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表