- 类型参数:
-
K
- 此映射维护的键的类型 -
V
- 映射值的类型
- 所有超接口:
-
Map<K,
V>
- 所有已知子接口:
-
ConcurrentNavigableMap<K,
,V> NavigableMap<K,
,V> SortedMap<K,
V>
- 所有已知实现类:
-
ConcurrentSkipListMap
,LinkedHashMap
,TreeMap
SequencedMap
的遇见顺序类似于SequencedCollection
元素的顺序,但排序适用于映射而不是单个元素。
此映射上的批量操作,包括forEach
和replaceAll
方法,在遇见顺序中操作此映射的映射。
由keySet
、values
、entrySet
、sequencedKeySet
、sequencedValues
和sequencedEntrySet
方法提供的视图集合都反映了此映射的遇见顺序。尽管keySet
、values
和entrySet
方法的返回值不是顺序化的类型,但这些视图集合中的元素确实反映了此映射的遇见顺序。因此,由以下语句返回的迭代器
var it1 = sequencedMap.entrySet().iterator();
var it2 = sequencedMap.sequencedEntrySet().iterator();
sequencedMap
的映射。
此接口提供方法以在映射的遇见顺序的任一端添加映射、检索映射和删除映射。
此接口还定义了reversed()
方法,它提供此映射的逆序视图。在逆序视图中,第一个和最后一个的概念被颠倒,后继和前驱的概念也被颠倒。此映射的第一个映射是逆序视图的最后一个映射,反之亦然。此映射中某个映射的后继是其在逆序视图中的前驱,反之亦然。所有尊重映射遇见顺序的方法都会像遇见顺序被倒置一样操作。例如,逆序视图的forEach
方法会报告从此映射的最后一个映射到第一个映射的顺序中的映射。此外,逆序视图的所有视图集合也反映了此映射的遇见顺序的逆序。例如,
var itr = sequencedMap.reversed().entrySet().iterator();
reversed
方法的可用性及其对所有适用方法和视图的排序语义的影响,允许在正向顺序或逆向顺序中方便地迭代、搜索、复制和流式传输此映射的映射。
映射的逆序视图通常不可序列化,即使原始映射是可序列化的。
通过迭代Map.entrySet()
视图、sequencedEntrySet()
视图和其逆序视图获得的Map.Entry
实例与底层映射保持连接。此连接仅在迭代期间得到保证。未指定在迭代之外是否保持连接。如果底层映射允许,调用条目的setValue
方法将修改底层映射的值。但未指定底层映射中值的修改是否在Entry
实例中可见。
firstEntry()
、lastEntry()
、pollFirstEntry()
和pollLastEntry()
方法返回代表调用时映射的映射快照的Map.Entry
实例。它们不支持通过可选的setValue
方法对底层映射进行修改。
根据实现方式,其他方式返回的Entry
实例可能与底层映射连接或未连接。例如,考虑以下方式获取的Entry
:
var entry = sequencedMap.sequencedEntrySet().getFirst();
Entry
的setValue
方法是否会更新底层映射中的映射,或者是否会引发异常,或者底层映射的更改是否在该Entry
中可见。
此接口对equals
和hashCode
方法的要求与Map.equals
和Map.hashCode
定义的要求相同。因此,如果两个映射具有相同的映射,则Map
和SequencedMap
将仅在它们具有相同的映射时比较相等,而不考虑顺序。
此类是Java集合框架的成员。
- 自:
- 21
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescription返回此映射中的第一个键-值映射,如果映射为空则返回null
。返回此映射中的最后一个键-值映射,如果映射为空则返回null
。移除并返回此映射中的第一个键-值映射,如果映射为空则返回null
(可选操作)。移除并返回此映射中的最后一个键-值映射,如果映射为空则返回null
(可选操作)。default V
如果映射中尚未存在给定的映射,则将给定的映射插入映射中,或者如果已存在则替换映射的值(可选操作)。default V
如果映射中尚未存在给定的映射,则将给定的映射插入映射中,或者如果已存在则替换映射的值(可选操作)。reversed()
返回此映射的逆序视图。default SequencedSet
<Map.Entry<K, V>> 返回此映射的entrySet
的SequencedSet
视图。default SequencedSet
<K> 返回此映射的keySet
的SequencedSet
视图。default SequencedCollection
<V> 返回此映射的values
集合的SequencedCollection
视图。Methods declared in interface java.util.Map
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
-
Method Details
-
reversed
SequencedMap<K,V> reversed()返回此映射的逆序视图。返回视图中的映射的遇见顺序是此映射中映射的遇见顺序的逆序。逆序排序会影响所有对顺序敏感的操作,包括对返回视图的视图集合的操作。如果实现允许对此视图进行修改,则修改会“写入”到底层映射。底层映射的更改可能会或可能不会在此逆序视图中可见,这取决于实现。- 返回:
- 此映射的逆序视图
-
firstEntry
返回此映射中的第一个键-值映射,如果映射为空则返回null
。- 实现要求:
- 此接口中的实现获取此映射的entrySet的迭代器。如果迭代器有一个元素,则返回该元素的不可修改副本。否则,返回null。
- 返回:
-
第一个键-值映射,如果此映射为空则返回
null
-
lastEntry
返回此映射中的最后一个键-值映射,如果映射为空则返回null
。- 实现要求:
- 此接口中的实现获取此映射的逆序视图的entrySet的迭代器。如果迭代器有一个元素,则返回该元素的不可修改副本。否则,返回null。
- 返回:
-
最后一个键-值映射,如果此映射为空则返回
null
-
pollFirstEntry
移除并返回此映射中的第一个键-值映射,如果映射为空则返回null
(可选操作)。- 实现要求:
-
此接口中的实现获取此映射的entrySet的迭代器。如果迭代器有一个元素,则调用迭代器的
remove
方法,然后返回该元素的不可修改副本。否则,返回null。 - 返回:
-
此映射的已移除的第一个条目,如果此映射为空则返回
null
- 抛出:
-
UnsupportedOperationException
- 如果此集合实现不支持此操作
-
pollLastEntry
移除并返回此映射中的最后一个键值对,如果映射为空则返回null
(可选操作)。- 实现要求:
-
此接口中的实现获取此映射的反向视图的entrySet的迭代器。如果迭代器有元素,则在迭代器上调用
remove
,然后返回该元素的不可修改副本。否则,返回null。 - 返回:
-
此映射的已移除的最后一个条目,如果此映射为空则返回
null
- 抛出:
-
UnsupportedOperationException
- 如果此集合实现不支持此操作
-
putFirst
如果给定映射尚未存在,则将其插入到映射中,如果已存在则替换映射的值(可选操作)。此操作正常完成后,给定映射将存在于此映射中,并且将是此映射中的第一个映射。- 实现要求:
-
此接口中的实现始终抛出
UnsupportedOperationException
。 - 参数:
-
k
- 键 -
v
- 值 - 返回:
- 与k先前关联的值,如果没有则返回null
- 抛出:
-
UnsupportedOperationException
- 如果此集合实现不支持此操作
-
putLast
如果给定映射尚未存在,则将其插入到映射中,如果已存在则替换映射的值(可选操作)。此操作正常完成后,给定映射将存在于此映射中,并且将是此映射中的最后一个映射。- 实现要求:
-
此接口中的实现始终抛出
UnsupportedOperationException
。 - 参数:
-
k
- 键 -
v
- 值 - 返回:
- 与k先前关联的值,如果没有则返回null
- 抛出:
-
UnsupportedOperationException
- 如果此集合实现不支持此操作
-
sequencedKeySet
返回此映射的keySet
的SequencedSet
视图。- 实现要求:
-
此接口中的实现返回一个行为如下的
SequencedSet
实例。其add
和addAll
方法会抛出UnsupportedOperationException
。其reversed
方法返回此映射的reversed
视图的sequencedKeySet
视图。其其他方法调用此映射的keySet
视图的相应方法。 - 返回:
-
此映射的
keySet
的SequencedSet
视图
-
sequencedValues
返回此映射的values
集合的SequencedCollection
视图。- 实现要求:
-
此接口中的实现返回一个行为如下的
SequencedCollection
实例。其add
和addAll
方法会抛出UnsupportedOperationException
。其reversed
方法返回此映射的reversed
视图的sequencedValues
视图。其equals
和hashCode
方法从Object
继承。其其他方法调用此映射的values
视图的相应方法。 - 返回:
-
此映射的
values
集合的SequencedCollection
视图
-
sequencedEntrySet
返回此映射的entrySet
的SequencedSet
视图。- 实现要求:
-
此接口中的实现返回一个行为如下的
SequencedSet
实例。其add
和addAll
方法会抛出UnsupportedOperationException
。其reversed
方法返回此映射的reversed
视图的sequencedEntrySet
视图。其其他方法调用此映射的entrySet
视图的相应方法。 - 返回:
-
此映射的
entrySet
的SequencedSet
视图
-