java 集合 包含_JAVA中的集合

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 21:04   4614   0

JAVA中的集合有哪些?

所有的类都位于java.util包下,主要由两个接口派生出来,分别是Collection和Map.

Collection包含了List和Set两大分支。

Map是一个映射接口。Set 、Map、List可以看做集合的三大类。

而遍历集合的工具有Iterator和Enumeration;

Arrays和Collection是操作数组集合的两个工具类。

Java中的集合主要分为四类:

1、List列表:有序的,可重复的;

2、Queue队列:有序,可重复的;

3、Set集合:不可重复;

4、Map映射:无序,键唯一,值不唯一。

集合类下包含的主要的实现类:

5092e49bf2232a0de3eb0a8528ba2158.png

e3964d4ee73b92fcfa9e3bf94daea218.png

1.List列表:有序,可重复

1.1 ArrayList数组列表

有序,可重复,内部是通过Array实现。对数据列表进行插入、删除操作时都需要对数组进行拷贝并重排序。因此在知道存储数据量时,尽量初始化初始容量,提升性能。

1.2 LinkedList双向链表

每个元素都有指向前后元素的指针。顺序读取的效率较高,随机读取的效率较低。

1.3 Vector向量

线程安全的列表,与ArrayList一样也是通过数组实现的,不同的是Vector是线程安全的,也即同一时间下只能有一个线程访问Vector,线程安全的同时带来了性能的耗损,所以一般都使用ArrayList。

1.4 Stack栈

后进先出(LIFO),继承自Vector,也是数组,线程安全的栈。但作为栈数据类型,不建议使用Vector中与栈无关的方法,尽量只用Stack中的定义的栈相关方法,这样不会破坏栈数据类型。

1.5 ArrayQueue数组队列

先进先出(FIFO)

2. Queue队列,有序、可重复

2.1 ArrayDeque

数组实现的双端队列,可以在队列两端插入和删除元素

2.2 LinkedList

也是双向链表

2.3 PriorityQueue

优先队列,数组实现的二叉树,完全二叉树实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值)

3. Map映射/字典,无序,键值对,键唯一

bf1cfd5639b87430d5ba3bea5609076f.png

3.1 HashMap

哈希映射/字典,无序字典,键值对数据,key是唯一的,Key和Value都可以为null

3.2 TreeMap

红黑树实现的key->value融合,可排序,红黑树是一种自平衡二叉查找树。

3.3 LinkedHashMap

链表映射/字典,继承了hashmap的所有特性,同时又实现了双向链表的特性,保留了元素插入顺序。

4. Set集合,不可重复

4.1 HashSet

基于HashMap实现的集合,对HashMap做了一些封装。与HaspMap不同的是元素的保存为链表形式,插入数据时遍历链表查看是否有相同数据,有则返回false,没有则返回true.

4.2 LinkedHashSet

链表集合,继承自HashSet与LinkedHashMap相似,是对LinkedHashMap的封装。

4.3 TreeSet

红黑树集合,与TreeMap相似,是对TreeMap的封装。

比较:

2ed5d08ad3701b04d6fcf4feb47fc6b9.png

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP