持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
Entry
public interface Map<K,V> {
interface Entry<K,V> {
K getKey();
V getValue();
V setValue(V value);
boolean equals(Object o);
int hashCode();
public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K,V>> comparingByKey() {
return (Comparator<Map.Entry<K, V>> & Serializable)
(c1, c2) -> c1.getKey().compareTo(c2.getKey());
}
public static <K, V extends Comparable<? super V>> Comparator<Map.Entry<K,V>> comparingByValue() {
return (Comparator<Map.Entry<K, V>> & Serializable)
(c1, c2) -> c1.getValue().compareTo(c2.getValue());
}
public static <K, V> Comparator<Map.Entry<K, V>> comparingByKey(Comparator<? super K> cmp) {
Objects.requireNonNull(cmp);
return (Comparator<Map.Entry<K, V>> & Serializable)
(c1, c2) -> cmp.compare(c1.getKey(), c2.getKey());
}
public static <K, V> Comparator<Map.Entry<K, V>> comparingByValue(Comparator<? super V> cmp) {
Objects.requireNonNull(cmp);
return (Comparator<Map.Entry<K, V>> & Serializable)
(c1, c2) -> cmp.compare(c1.getValue(), c2.getValue());
}
}
}
注释内容
- (键值对)。Map.entrySet 方法返回一个 map 集合视图,其元素属于这个类
- 获取 map entry 引用的唯一方法是从这个集合视图的迭代器
- 这些 Map.Entry 对象只有在迭代期间有效;更准确地说,如果在迭代器返回的 entry 之后,backing map 已经被修改,map entry 行为是未定义,除非在 map entry 抛出 setValue 操作
方法内容
K getKey():返回和这个 entry 相关的 keyV getValue():返回和这个 entry 相关的 value。如果映射已经从 backing map 移除(通过迭代器的 remove 操作),这个调用的返回时未定义V setValue(V value):通过指定值替代对应这个 entry 的值(可选操作)。(通过写入 map)如果映射已经从这个 map 移除,这个调用的行为是未定义的(通过迭代器的 remove 操作)boolean equals(Object o):通过这个 entry 和指定对象比较。返回 true,如果给定对象同样是 map entry 并且两个对象代表相同映射。更准确的说,两个 entry e1 和 e2 代表相同映射,如果 (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 接口不同实现正常工作int hashCode():返回这个 map entry 的哈希编码值。map entry e 的哈希编码背定义为:(e.getKey()==null ? 0 : e.getKey().hashCode()) ^ (e.getValue()==null ? 0 : e.getValue().hashCode())。这确保了对任意两个 Entry e1 和 e2,e1.equals(e2) 意味着 e1.hashCode()==e2.hashCode(),按照 Object.hashCode 的总合同的要求public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K,V>> comparingByKey():返回比较器,按照 key 的自然顺序比较 Map.Entry- 当 entry 和 null 值比较,返回的比较器是可序列化并且抛出 NullPointerException
public static <K, V extends Comparable<? super V>> Comparator<Map.Entry<K,V>> comparingByValue():返回比较器,按照 value 的自然顺序比较 Map.Entry- 当 entry 和 null 值比较,返回的比较器是可序列化并且抛出 NullPointerException
public static <K, V> Comparator<Map.Entry<K, V>> comparingByKey(Comparator<? super K> cmp):返回比较器,通过使用给定 Comparator 比较 Map.Entry- 如果指定比较器可序列化,返回的比较器是可序列化
public static <K, V> Comparator<Map.Entry<K, V>> comparingByValue(Comparator<? super V> cmp):返回比较器,通过给定的 Comparator 比较 Map.Entry- 如果指定比较器可序列化,返回的比较器是可序列化