Module java.base
Package java.util

Interface SequencedMap<K,V>

类型参数:
K - 此映射维护的键的类型
V - 映射值的类型
所有超接口:
Map<K,V>
所有已知子接口:
ConcurrentNavigableMap<K,V>, NavigableMap<K,V>, SortedMap<K,V>
所有已知实现类:
ConcurrentSkipListMap, LinkedHashMap, TreeMap

public interface SequencedMap<K,V> extends Map<K,V>
具有明确定义的遇见顺序、支持两端操作且可逆的映射。 SequencedMap遇见顺序类似于SequencedCollection元素的顺序,但排序适用于映射而不是单个元素。

此映射上的批量操作,包括forEachreplaceAll方法,在遇见顺序中操作此映射的映射。

keySetvaluesentrySetsequencedKeySetsequencedValuessequencedEntrySet方法提供的视图集合都反映了此映射的遇见顺序。尽管keySetvaluesentrySet方法的返回值不是顺序化的类型,但这些视图集合中的元素确实反映了此映射的遇见顺序。因此,由以下语句返回的迭代器

    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();
未指定通过此接口获取的EntrysetValue方法是否会更新底层映射中的映射,或者是否会引发异常,或者底层映射的更改是否在该Entry中可见。

此接口对equalshashCode方法的要求与Map.equalsMap.hashCode定义的要求相同。因此,如果两个映射具有相同的映射,则MapSequencedMap将仅在它们具有相同的映射时比较相等,而不考虑顺序。

此类是Java集合框架的成员。

自:
21
  • Method Details

    • reversed

      SequencedMap<K,V> reversed()
      返回此映射的逆序视图。返回视图中的映射的遇见顺序是此映射中映射的遇见顺序的逆序。逆序排序会影响所有对顺序敏感的操作,包括对返回视图的视图集合的操作。如果实现允许对此视图进行修改,则修改会“写入”到底层映射。底层映射的更改可能会或可能不会在此逆序视图中可见,这取决于实现。
      返回:
      此映射的逆序视图
    • firstEntry

      default Map.Entry<K,V> firstEntry()
      返回此映射中的第一个键-值映射,如果映射为空则返回null
      实现要求:
      此接口中的实现获取此映射的entrySet的迭代器。如果迭代器有一个元素,则返回该元素的不可修改副本。否则,返回null。
      返回:
      第一个键-值映射,如果此映射为空则返回null
    • lastEntry

      default Map.Entry<K,V> lastEntry()
      返回此映射中的最后一个键-值映射,如果映射为空则返回null
      实现要求:
      此接口中的实现获取此映射的逆序视图的entrySet的迭代器。如果迭代器有一个元素,则返回该元素的不可修改副本。否则,返回null。
      返回:
      最后一个键-值映射,如果此映射为空则返回null
    • pollFirstEntry

      default Map.Entry<K,V> pollFirstEntry()
      移除并返回此映射中的第一个键-值映射,如果映射为空则返回null(可选操作)。
      实现要求:
      此接口中的实现获取此映射的entrySet的迭代器。如果迭代器有一个元素,则调用迭代器的remove方法,然后返回该元素的不可修改副本。否则,返回null。
      返回:
      此映射的已移除的第一个条目,如果此映射为空则返回null
      抛出:
      UnsupportedOperationException - 如果此集合实现不支持此操作
    • pollLastEntry

      default Map.Entry<K,V> pollLastEntry()
      移除并返回此映射中的最后一个键值对,如果映射为空则返回null(可选操作)。
      实现要求:
      此接口中的实现获取此映射的反向视图的entrySet的迭代器。如果迭代器有元素,则在迭代器上调用remove,然后返回该元素的不可修改副本。否则,返回null。
      返回:
      此映射的已移除的最后一个条目,如果此映射为空则返回null
      抛出:
      UnsupportedOperationException - 如果此集合实现不支持此操作
    • putFirst

      default V putFirst(K k, V v)
      如果给定映射尚未存在,则将其插入到映射中,如果已存在则替换映射的值(可选操作)。此操作正常完成后,给定映射将存在于此映射中,并且将是此映射中的第一个映射。
      实现要求:
      此接口中的实现始终抛出UnsupportedOperationException
      参数:
      k - 键
      v - 值
      返回:
      与k先前关联的值,如果没有则返回null
      抛出:
      UnsupportedOperationException - 如果此集合实现不支持此操作
    • putLast

      default V putLast(K k, V v)
      如果给定映射尚未存在,则将其插入到映射中,如果已存在则替换映射的值(可选操作)。此操作正常完成后,给定映射将存在于此映射中,并且将是此映射中的最后一个映射。
      实现要求:
      此接口中的实现始终抛出UnsupportedOperationException
      参数:
      k - 键
      v - 值
      返回:
      与k先前关联的值,如果没有则返回null
      抛出:
      UnsupportedOperationException - 如果此集合实现不支持此操作
    • sequencedKeySet

      default SequencedSet<K> sequencedKeySet()
      返回此映射的keySetSequencedSet视图。
      实现要求:
      此接口中的实现返回一个行为如下的SequencedSet实例。其addaddAll方法会抛出UnsupportedOperationException。其reversed方法返回此映射的reversed视图的sequencedKeySet视图。其其他方法调用此映射的keySet视图的相应方法。
      返回:
      此映射的keySetSequencedSet视图
    • sequencedValues

      default SequencedCollection<V> sequencedValues()
      返回此映射的values集合的SequencedCollection视图。
      实现要求:
      此接口中的实现返回一个行为如下的SequencedCollection实例。其addaddAll方法会抛出UnsupportedOperationException。其reversed方法返回此映射的reversed视图的sequencedValues视图。其equalshashCode方法从Object继承。其其他方法调用此映射的values视图的相应方法。
      返回:
      此映射的values集合的SequencedCollection视图
    • sequencedEntrySet

      default SequencedSet<Map.Entry<K,V>> sequencedEntrySet()
      返回此映射的entrySetSequencedSet视图。
      实现要求:
      此接口中的实现返回一个行为如下的SequencedSet实例。其addaddAll方法会抛出UnsupportedOperationException。其reversed方法返回此映射的reversed视图的sequencedEntrySet视图。其其他方法调用此映射的entrySet视图的相应方法。
      返回:
      此映射的entrySetSequencedSet视图