0
点赞
收藏
分享

微信扫一扫

Java集合相关知识整合

你的益达233 2022-04-02 阅读 97
java

集合是一个存储相同内容的容器。集合类主要由Map和Collection两个根接口派生而成。

在Collection下面有三个子接口来继承它,这三个子接口分别是List接口、Set接口和Queue接口。

List接口:

Set接口:

Queue接口:

Map 接口下面的集合类主要由AbstractMap抽象类和SortedMap接口派生而来。比较常用的集合类有:HashMap,Hashtable,TreeMap,ConcurrentHashMap

AbstractMap抽象类:

 SortedMap接口:

常用集合类:

各类集合详解 :

List集合:

1、有序集合(存储和取出元素顺序相同)

2、有索引(可以使用普通for循环遍历)

3、元素可以重复(允许存储重复数据)

List集合下面有ArrayList、LinkedList、vector等子类他们的区别和联系有下表

ArrayListLinkedListVector
底层数据结构数组双向循环链表数组
特点查询快,增删慢查询慢,增删快查询慢,增删慢
线程安全性不安全不安全安全

Set集合:

1、无序集合(存储和取出元素顺序不同)

2、无索引(不可以使用普通for循环遍历)

3、元素不可以重复(不允许存储重复数据)

List集合下面有HashSet、LinkedHashList、TreeSet等子类他们的区别和联系有下表

HashSetLinkedHashSetTreeSet
底层数据结构哈希表(数组+链表或红黑树)链表+哈希表红黑树
特点查询快,增删快查询快,增删快查询快,增删快
保证唯一性方式重写hashCode()和equals()重写hashCode()和equals()CompareTo()返回0
线程安全性不安全不安全不安全

HashSet:HashSet 是用来存储没有重复元素的集合类 ,底层是HashMap

LinkedHashSet:使用 HashSet 机制实现,它是一个可以保证插入顺序或是访问顺序的集合类

TreeSet:TreeSet 实现了 SortedSet 接口,意味着可以排序,它是一个有序的集合类

Map集合:

HashMapHashtable

TreeMap

ConCurrentHashMap
底层数据结构数组+链表或红黑树(链表长度>8)数组+链表或红黑树(链表长度>8)红黑树数组+链表或红黑树(链表长度>8)
是否允许null键值
线程安全性不安全安全不安全安全

HashMap :是以key-value 键值对形式存储数据,允许 key 为 null(多个则覆盖),也允许 value 为 null。底层结构是数组 + 链表 + 红黑树。 

Hashtable:Hashtable 也是一个哈希散列表,Hashtable 继承于 Dictionary,使用重入锁 Synchronized 实现线程安全,key 和 value 都不允许为 Null。HashTable 已被高性能的 ConcurrentHashMap 代替。

TreeMap :实现了 SotredMap 接口,意味着可以排序,是一个有序的集合。底层数据结构是红黑树结构,TreeMap 中的每个元素都存放在红黑树的节点上,默认使用自然排序,也可以自定排序,线程不安全。

ConCurrentHashMap:采用CAS + Synchronized 实现锁操作,Node 改名为 HashEntry,引入了红黑树保证查询效率,底层数据结构由数组 + 链表 + 红黑树组成,Node 数组默认为 16。

举报

相关推荐

0 条评论