- 类型参数:
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
- 参见:
-
方法总结
修饰符和类型方法描述static <K extends Comparable<? super K>,
V>
Comparator<Map.Entry<K,V>> 返回一个比较器,该比较器按键的自然顺序比较Map.Entry
。static <K,
V> Comparator<Map.Entry<K, V>> comparingByKey
(Comparator<? super K> cmp) 返回一个比较器,该比较器使用给定的Comparator
按键比较Map.Entry
。static <K,
V extends Comparable<? super V>>
Comparator<Map.Entry<K,V>> 返回一个比较器,该比较器按值的自然顺序比较Map.Entry
。static <K,
V> Comparator<Map.Entry<K, V>> comparingByValue
(Comparator<? super V> cmp) 返回一个比较器,该比较器使用给定的Comparator
按值比较Map.Entry
。static <K,
V> Map.Entry<K, V> 返回给定Map.Entry
的副本。boolean
比较指定对象与此项是否相等。getKey()
返回与此条目对应的键。getValue()
返回对应于此条目的值。int
hashCode()
返回此map条目的哈希码值。用指定值替换与此条目对应的值(可选操作)。
-
方法详情
-
getKey
K getKey()返回与此条目对应的键。- 返回:
- 与此条目对应的密钥
- 抛出:
IllegalStateException
- 如果条目已从支持map中删除,则实现可能会(但不是必须)抛出此异常。
-
getValue
V getValue()返回对应于此条目的值。如果map已从支持map中移除(通过迭代器的remove
操作),则此调用的结果是未定义的。- 返回:
- 该条目对应的值
- 抛出:
IllegalStateException
- 如果条目已从支持map中删除,则实现可能会(但不是必须)抛出此异常。
-
setValue
用指定值替换与此条目对应的值(可选操作)。 (写入映射。)如果map已从map中删除(通过迭代器的remove
操作),则此调用的行为未定义。- 参数:
value
- 要存储在此条目中的新值- 返回:
- 条目对应的旧值
- 抛出:
UnsupportedOperationException
- 如果后备映射不支持put
操作ClassCastException
- 如果指定值的类阻止它存储在支持map中NullPointerException
- 如果支持map不允许空值,并且指定值为空IllegalArgumentException
- 如果此值的某些属性阻止它存储在支持map中IllegalStateException
- 如果条目已从支持map中删除,则实现可能会(但不是必须)抛出此异常。
-
equals
比较指定对象与此项是否相等。如果给定对象也是映射条目并且两个条目表示相同的映射,则返回true
。更正式地说,两个条目e1
和e2
表示相同的映射 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
接口的不同实现中正常工作。 -
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()
对于任何两个条目e1
和e2
,正如Object.hashCode
的一般合同所要求的那样。 -
comparingByKey
返回一个比较器,该比较器按键的自然顺序比较Map.Entry
。返回的比较器是可序列化的,并在将条目与空键进行比较时抛出
NullPointerException
。- 类型参数:
K
- then 映射键的Comparable
类型V
- 映射值的类型- 返回:
-
比较器,按键的自然顺序比较
Map.Entry
。 - 自从:
- 1.8
- 参见:
-
comparingByValue
返回一个比较器,该比较器按值的自然顺序比较Map.Entry
。返回的比较器是可序列化的,并在将条目与空值进行比较时抛出
NullPointerException
。- 类型参数:
K
- 映射键的类型V
- 映射值的Comparable
类型- 返回:
-
以自然顺序比较
Map.Entry
值的比较器。 - 自从:
- 1.8
- 参见:
-
comparingByKey
- 类型参数:
K
- 映射键的类型V
- 映射值的类型- 参数:
cmp
- 关键Comparator
- 返回:
-
通过键比较
Map.Entry
的比较器。 - 自从:
- 1.8
-
comparingByValue
- 类型参数:
K
- 映射键的类型V
- 映射值的类型- 参数:
cmp
- 值Comparator
- 返回:
-
比较
Map.Entry
值的比较器。 - 自从:
- 1.8
-
copyOf
返回给定Map.Entry
的副本。返回的实例不与任何map相关联。返回的实例与Map::entry
方法返回的实例具有相同的特征。- API 注意:
-
从map的条目集视图获得的实例与该map有连接。
copyOf
方法可用于创建一个Map.Entry
实例,包含相同的键和值,独立于任何映射。 - 实现注意事项:
-
如果给定条目是通过调用
copyOf
或Map::entry
获得的,则调用copyOf
通常不会创建另一个副本。 - 类型参数:
K
- 密钥的类型V
- 值的类型- 参数:
e
- 要复制的条目- 返回:
- 等于给定条目的映射条目
- 抛出:
NullPointerException
- 如果 e 为 null 或者它的键或值中的任何一个为 null- 自从:
- 17
-