模块 java.base
 java.util

接口Map.Entry<K,V>

类型参数:
K - 密钥的类型
V - 值的类型
所有已知的实现类:
AbstractMap.SimpleEntry , AbstractMap.SimpleImmutableEntry
封闭接口:
Map<K,V>

public static interface Map.Entry<K,V>
映射条目(键值对)。如果实现了可选的setValue方法,条目可能是不可修改的,或者值可能是可修改的。 Entry 可以独立于任何映射,也可以表示映射的条目集视图的条目。

Map.Entry 接口的实例可以通过迭代映射的条目集视图来获得。这些实例保持与原始支持map的连接。这个与支持map的连接是有效的仅有的对于条目集视图的迭代持续时间。在条目集视图的迭代期间,如果支持map支持,则通过 setValue 方法对 Map.Entry 值的更改将在支持map中可见。这种 Map.Entry 实例的行为在映射的条目集视图的迭代之外是未定义的。如果在迭代器返回 Map.Entry 之后修改了支持map,它也是未定义的,除非通过 Map.Entry.setValue 方法。特别是,对支持map中映射值的更改可能会或可能不会在条目集视图的相应 Map.Entry 元素中可见。

API 注意:
可以使用 copyOf 方法创建一个与支持map断开连接的 Map.Entry 实例。例如,以下创建map条目的快照,即使原始映射被修改也保证不会更改:
 
 var entries = map.entrySet().stream().map(Map.Entry::copyOf).toList()
  
自从:
1.2
参见:
  • 方法详情

    • getKey

      K  getKey()
      返回与此条目对应的键。
      返回:
      与此条目对应的密钥
      抛出:
      IllegalStateException - 如果条目已从支持map中删除,则实现可能会(但不是必须)抛出此异常。
    • getValue

      V  getValue()
      返回对应于此条目的值。如果map已从支持map中移除(通过迭代器的remove 操作),则此调用的结果是未定义的。
      返回:
      该条目对应的值
      抛出:
      IllegalStateException - 如果条目已从支持map中删除,则实现可能会(但不是必须)抛出此异常。
    • setValue

      V  setValue(V  value)
      用指定值替换与此条目对应的值(可选操作)。 (写入映射。)如果map已从map中删除(通过迭代器的 remove 操作),则此调用的行为未定义。
      参数:
      value - 要存储在此条目中的新值
      返回:
      条目对应的旧值
      抛出:
      UnsupportedOperationException - 如果后备映射不支持 put 操作
      ClassCastException - 如果指定值的类阻止它存储在支持map中
      NullPointerException - 如果支持map不允许空值,并且指定值为空
      IllegalArgumentException - 如果此值的某些属性阻止它存储在支持map中
      IllegalStateException - 如果条目已从支持map中删除,则实现可能会(但不是必须)抛出此异常。
    • equals

      boolean equals(Object  o)
      比较指定对象与此项是否相等。如果给定对象也是映射条目并且两个条目表示相同的映射,则返回 true。更正式地说,两个条目 e1e2 表示相同的映射 if
         (e1.getKey()==null ?
         e2.getKey()==null : e1.getKey().equals(e2.getKey())) &&
         (e1.getValue()==null ?
         e2.getValue()==null : e1.getValue().equals(e2.getValue()))
       
      这确保了 equals 方法在 Map.Entry 接口的不同实现中正常工作。
      重写:
      equals 在类 Object
      参数:
      o - 要与此map条目进行相等比较的对象
      返回:
      true 如果指定对象等于此map条目
      参见:
    • hashCode

      int hashCode()
      返回此map条目的哈希码值。映射条目 e 的哈希码被定义为:
         (e.getKey()==null  ? 0 : e.getKey().hashCode()) ^
         (e.getValue()==null ? 0 : e.getValue().hashCode())
       
      这确保了 e1.equals(e2) 意味着 e1.hashCode()==e2.hashCode() 对于任何两个条目 e1e2 ,正如 Object.hashCode 的一般合同所要求的那样。
      重写:
      hashCode 在类 Object
      返回:
      此map条目的哈希码值
      参见:
    • comparingByKey

      static <K extends Comparable <? super K>, V> Comparator <Map.Entry <K,V>> comparingByKey()
      返回一个比较器,该比较器按键的自然顺序比较 Map.Entry

      返回的比较器是可序列化的,并在将条目与空键进行比较时抛出 NullPointerException

      类型参数:
      K - then 映射键的 Comparable 类型
      V - 映射值的类型
      返回:
      比较器,按键的自然顺序比较 Map.Entry
      自从:
      1.8
      参见:
    • comparingByValue

      static <K, V extends Comparable <? super V>> Comparator <Map.Entry <K,V>> comparingByValue()
      返回一个比较器,该比较器按值的自然顺序比较 Map.Entry

      返回的比较器是可序列化的,并在将条目与空值进行比较时抛出 NullPointerException

      类型参数:
      K - 映射键的类型
      V - 映射值的 Comparable 类型
      返回:
      以自然顺序比较 Map.Entry 值的比较器。
      自从:
      1.8
      参见:
    • comparingByKey

      static <K, V> Comparator <Map.Entry <K,V>> comparingByKey(Comparator <? super K> cmp)
      返回一个比较器,该比较器使用给定的 Comparator 按键比较 Map.Entry

      如果指定的比较器也是可序列化的,则返回的比较器是可序列化的。

      类型参数:
      K - 映射键的类型
      V - 映射值的类型
      参数:
      cmp - 关键 Comparator
      返回:
      通过键比较 Map.Entry 的比较器。
      自从:
      1.8
    • comparingByValue

      static <K, V> Comparator <Map.Entry <K,V>> comparingByValue(Comparator <? super V> cmp)
      返回一个比较器,该比较器使用给定的 Comparator 按值比较 Map.Entry

      如果指定的比较器也是可序列化的,则返回的比较器是可序列化的。

      类型参数:
      K - 映射键的类型
      V - 映射值的类型
      参数:
      cmp - 值 Comparator
      返回:
      比较 Map.Entry 值的比较器。
      自从:
      1.8
    • copyOf

      static <K, V> Map.Entry <K,V> copyOf(Map.Entry <? extends K,? extends V> e)
      返回给定 Map.Entry 的副本。返回的实例不与任何map相关联。返回的实例与 Map::entry 方法返回的实例具有相同的特征。
      API 注意:
      从map的条目集视图获得的实例与该map有连接。 copyOf 方法可用于创建一个 Map.Entry 实例,包含相同的键和值,独立于任何映射。
      实现注意事项:
      如果给定条目是通过调用 copyOfMap::entry 获得的,则调用 copyOf 通常不会创建另一个副本。
      类型参数:
      K - 密钥的类型
      V - 值的类型
      参数:
      e - 要复制的条目
      返回:
      等于给定条目的映射条目
      抛出:
      NullPointerException - 如果 e 为 null 或者它的键或值中的任何一个为 null
      自从:
      17