- 类型参数:
-
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视图
-