好的!下面是关于 Java 中 Map.Entry
的详解,包括含义、常用方法、实际用途与代码示例,适合初学者和实际项目中参考。
🔍 Java 中的 Map.Entry
含义及方法详解
✅ 一、Map.Entry
是什么?
Map.Entry<K, V>
是 Map
接口的一个内部接口(Map
的静态内部类),代表Map 中的一个键值对(key-value pair)对象。
🧠 举例:
假设你有一个 Map:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 5);
那么 Map.Entry<String, Integer>
可以表示其中一个键值对,如:"apple" = 3
📘 二、如何获取 Map.Entry?
通过 map.entrySet()
方法:
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
你可以使用 for-each
循环遍历每一个 Entry
:
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
🧩 三、常用方法说明
方法 | 说明 |
---|---|
getKey() | 获取键(Key) |
getValue() | 获取值(Value) |
setValue(V value) | 设置当前 Entry 的值(会影响原 Map) |
equals(Object o) | 比较两个 Entry 是否相等(键和值都相等) |
hashCode() | 返回键值对的哈希码 |
🧪 四、代码示例演练
1️⃣ 遍历 Map 所有键值对:
Map<String, String> map = new HashMap<>();
map.put("A", "Apple");
map.put("B", "Banana");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
2️⃣ 修改值(使用 setValue()
):
for (Map.Entry<String, String> entry : map.entrySet()) {
if ("B".equals(entry.getKey())) {
entry.setValue("Blueberry"); // 直接更新 Map 中的值
}
}
System.out.println(map); // 输出:{A=Apple, B=Blueberry}
💡 五、为什么使用 Map.Entry
?
- 比单独用
keySet()
更高效(避免再次调用get()
) - 在遍历过程中可以直接修改 value
- 便于使用 lambda 表达式和流处理
🚀 六、与 Java 8 Stream 的结合示例
map.entrySet().stream()
.filter(e -> e.getKey().startsWith("A"))
.forEach(e -> System.out.println(e.getKey() + ": " + e.getValue()));
🔚 七、小结
特性 | 说明 |
---|---|
是 Map 的内部接口 | Map.Entry<K,V> 表示一个键值对 |
通常用于遍历 | 常通过 map.entrySet() 获取所有 entry |
可修改值 | setValue() 会直接影响 Map 中的值 |
实用性强 | 在 for-each 和 Stream 中都非常常用 |
发表回复