std.collection 包
功能介绍
collection 包提供了常见数据结构的高效实现、相关抽象的接口的定义以及在集合类型中常用的函数功能。
本包实现了以下常用的数据结构:
-
ArrayDeque:基于数组实现的双端循环队列,支持在集合的两端进行元素的插入和删除操作。可以使用 addFirst() 和 addLast() 方法在头部和尾部插入元素,使用 removeFirst() 和 removeLast() 方法从集合的头部和尾部删除元素。
-
ArrayList:变长的连续数组,在需要存储不确定数量的数据,或者需要根据运行时的条件动态调整数组大小时使用 ArrayList。使用 ArrayList 可能会导致内存分配和释放的开销增加,因此需要谨慎使用。
-
ArrayQueue:基于数组实现的循环队列,只允许在尾部插入元素,在头部删除元素。
-
ArrayStack:基于数组实现的栈数据结构。特点是先进后出,只能在顶部进行数据的插入和删除。
-
LinkedList:链表结构, LinkedList 的优点是它可以动态地添加或删除元素,而不需要移动其他元素。这使得它在需要频繁添加或删除元素的情况下非常有用。它还可以轻松地进行修改或删除操作,并且可以在列表中存储多个元素。 LinkedList 的缺点是它需要额外的内存来存储每个元素的引用,这可能会导致内存浪费。
-
HashMap:哈希表,它存储键值对,并且可以根据键快速访问值。在需要使用映射关系并且需要快速查找时使用。
-
HashSet:基于哈希表实现的集合数据结构,它可以用于快速检索和删除元素,具有高效的插入、删除和查找操作。
-
TreeMap:基于红黑树实现的有序映射表。通常情况下,当需要将元素按照自然顺序或者自定义顺序进行排序时,可以使用TreeMap。
collection 包提供的集合类型都不支持并发安全,并发安全的集合请见 collection.concurrent 包。
API 列表
函数
接口
接口名 | 功能 |
---|---|
Deque<T> | 双端队列是一种具有队列和栈特性的数据结构,它允许在两端进行插入和删除操作。 |
EquatableCollection<T> | 定义了可以进行比较的集合类型。 |
List<T> | 提供了对索引友好的列表操作。 |
Map<K, V> | 提供了一种将键映射到值的方式。 |
MapEntryView<K, V> | 键值对集合中的某个Key的视图 |
OrderedMap<K, V> | 有序映射 |
Queue<T> | 队列数据结构,它遵循先进先出(First In First Out, FIFO)原则。 |
ReadOnlyList<T> | 定义了对列表的只读操作。 |
ReadOnlyMap<K, V> | 只读映射 |
ReadOnlySet<K, V> | 只读集合 |
Set<T> | 不包含重复元素的集合。 |
Stack<T> | 栈数据结构接口,具有后进先出(Last In First Out,LIFO)的特点。 |
类
类名 | 功能 |
---|---|
ArrayDeque<T> | 根据可调整大小的循环数组实现的双端队列。 |
ArrayList<T> | 提供可变长度的数组的功能。 |
ArrayQueue<T> | 基于数组实现的循环队列数据结构。 |
ArrayStack<T> | 基于数组实现的栈Stack 数据结构。 |
HashMapIterator<K, V> where K <: Hashable & Equatable<K> | 此类主要实现 HashMap 的迭代器功能。 |
HashMap<K, V> where K <: Hashable & Equatable<K> | Map<K, V> where K <: Equatable<K> 接口的哈希表实现。 |
HashSet<T> where T <: Hashable & Equatable<T> | 基于 HashMap<K, V> where K <: Hashable & Equatable<K> 实现的 Set<T> where T <: Equatable<T> 接口的实例。 |
LinkedListNode<T> | LinkedList<T> 上的节点。 |
LinkedList<T> | 实现双向链表的数据结构。 |
TreeMap<K, V> where K <: Comparable<K> | 基于平衡二叉搜索树实现的 Map<K, V> where K <: Equatable<K> 接口实例。 |
异常类
异常类名 | 功能 |
---|---|
ConcurrentModificationException | 并发修改异常类。 |