1. 什么是序列集合
序列集合是指元素有明确顺序的集合,如List、Deque等。Java 21为这类集合引入了统一的API。
2. 新增接口
在JDK21中新增了3个接口:
java
interface SequencedCollection<E> extends Collection<E> {
// 新增方法
SequencedCollection<E> reversed();
void addFirst(E);
void addLast(E);
E getFirst();
E getLast();
E removeFirst();
E removeLast();
}
interface SequencedSet<E> extends Set<E>, SequencedCollection<E> {
SequencedSet<E> reversed();
}
interface SequencedMap<K,V> extends Map<K,V> {
// 新增方法
SequencedMap<K,V> reversed();
void putFirst(K, V);
void putLast(K, V);
Entry<K,V> firstEntry();
Entry<K,V> lastEntry();
Entry<K,V> pollFirstEntry();
Entry<K,V> pollLastEntry();
}
SequencedCollection 继承自 Collection。
在包含的方法中:
- reversed 方法返回一个逆序的 SequencedCollection 对象。
- addFirst 和 addLast 方法分别在集合的起始和结束位置添加新的元素。
- getFirst 和 getLast 方法分别获取集合的第一个和最后一个元素。
- removeFirst 和 removeLast 方法分别删除集合的第一个和最后一个元素。
除了SequencedCollection 之外,还有几个具体的子类型:
1、SequencedSet 同时继承自 Set 和 SequencedCollection。
2、SequencedMap 继承自 Map,其中的 entry 有确定的出现顺序。具体的方法说明:
- reversed 方法返回一个 entry 逆序的 SequencedMap。
- sequencedKeySet 方法返回包含 key 的 SequencedSet。
- sequencedValues 方法返回包含 value 的 SequencedCollection。
- sequencedEntrySet 方法返回包含 entry 的 SequencedSet。
- putFirst 和 putLast 分别在 entry 的最前和最后位置插入名值对。
- firstEntry 和 lastEntry 分别获取第一个和最后一个 entry。
- pollFirstEntry 和 pollLastEntry 分别删除第一个和最后一个 entry。
3.集合类层级结构
因此java集合类的层次结构发生了变化,如下图:

绿色方框是新增的 3 个接口,从中可以看到已有集合类的继承关系的变化:
- List 继承自 SequencedCollection。
- Deque 继承自 SequencedCollection。
- LinkedHashSet 实现了 SequencedSet 接口。
- SortedSet 继承自 SequencedSet。
- LinkedHashMap 实现了 SequencedMap 接口
- SortedMap 继承自 SequencedMap。
有了这3个新的顺序集合相关的接口之后,Java 代码可以更清楚地表达顺序集合以及顺序集合上的操作。