目录
三大容器的介绍
-
List(列表)
- 结构:由有序的元素序列组成,可以包含重复元素
- 特点:可以通过索引访问元素,插入的顺序与遍历顺序一致
- 常见实现类:ArrayList、LinkedList、Vector
-
Map(映射)
- 结构:由键值对(Key-Value)对组成的集合,键唯一,值可以重复
- 特点:通过键快速查找值,不保证插入顺序,每个键唯一
- 常见实现类:HashMap、TreeMap、LinkedHashMap、Hashtable
-
Set(集合)
- 结构:由唯一元素组成的集合
- 特点:不允许重复元素,没有索引概念,不保证插入顺序
- 常见实现类:HashSet、TreeSet、LinkedHashSet
使用场景介绍
list下面所有的类都是有序的,并且是可以重复的
set适合在要求去重的情况下使用,他并不能保证顺序,但是LinkedHashSet是可以保证插入时的顺序的
map适用于去重,和计算相的值出现的次数,hashmap可以去重但是不能保证顺序,可以选用LinkedHashMap去重的同时保证了key的顺序,TreeMap是可以去重的同时 按照大小进行排序
List 实现类
- ArrayList:基于数组的实现,支持快速随机访问和遍历。适用于需要频繁访问元素和对列表进行大量随机访问的场景。
- LinkedList:基于链表的实现,支持高效的插入和删除操作。适用于需要频繁进行插入和删除操作的场景。
- Vector:与 ArrayList 类似,但是是线程安全的。适用于多线程环境下需要安全操作的场景,但相比 ArrayList 会有一定的性能开销。
Map 实现类
- HashMap:基于哈希表的实现,提供快速的插入、删除和查找操作。不保证元素的顺序,在大多数场景下具有良好的性能。
- TreeMap:基于红黑树的实现,按照键的自然顺序或自定义顺序进行排序。适用于需要按照顺序遍历键值对的场景。
- LinkedHashMap:在 HashMap 的基础上维护了一个双向链表,保持元素的插入顺序或者访问顺序。适用于需要保持插入顺序或访问顺序的场景。
- Hashtable:与 HashMap 类似,但是是线程安全的。适用于多线程环境下需要安全操作的场景,但相比 HashMap 会有一定的性能开销。
Set 实现类:
- HashSet:基于哈希表的实现,提供快速的插入、删除和查找操作。不保证元素的顺序。
- TreeSet:基于红黑树的实现,按照元素的自然顺序或自定义顺序进行排序。适用于需要按照顺序遍历元素的场景。
- LinkedHashSet:在 HashSet 的基础上维护了一个双向链表,保持元素的插入顺序或者访问顺序。适用于需要保持插入顺序或者访问顺序的场景。