Map.Entry entry

这行代码是 Java 中用于遍历 Map 集合的标准方式:
for (Map.Entry entry : oldMap.entrySet())

详细解释:

  1. oldMap.entrySet()

    • 作用:返回包含 Map 中所有键值对的 Set 集合
    • 返回值:Set>(每个元素都是键值对对象)
  2. Map.Entry entry

    • Map.Entry 是一个表示单个键值对的接口
    • 包含两个核心方法:
      • getKey():获取键
      • getValue():获取值
  3. : (冒号)​

    • 增强型 for 循环语法(foreach 循环)
    • 自动遍历集合中的每个元素

执行流程:

for (Map.Entry entry : map.entrySet()) {
    String key = entry.getKey();   // 获取当前键
    Integer value = entry.getValue(); // 获取当前值
    
    // 对键值对进行业务处理...
}

等价于传统迭代器写法:

Iterator> it = map.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry entry = it.next();
    // 处理 entry...
}

使用场景示例:

Map scores = new HashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 85);

// 遍历所有键值对
for (Map.Entry entry : scores.entrySet()) {
    System.out.println("学生: " + entry.getKey() 
                      + ", 分数: " + entry.getValue());
}

输出:

学生: Alice, 分数: 90
学生: Bob, 分数: 85

实际应用:修改键的完整示例

Map map = new HashMap<>();
map.put("oldKey", 100);

// 1. 创建临时集合存储需要修改的键值对
List> toUpdate = new ArrayList<>();

// 2. 收集目标键值对
for (Map.Entry entry : map.entrySet()) {
    if ("oldKey".equals(entry.getKey())) {
        toUpdate.add(entry);
    }
}

// 3. 修改键(通过创建新键值对)
for (Map.Entry entry : toUpdate) {
    map.put("newKey", entry.getValue()); // 添加新键
    map.remove(entry.getKey());          // 移除旧键
}

关键优势:

  1. ​高效性​​:entrySet() 在遍历时比分开调用 keySet() + get() 更高效
    (减少哈希计算次数)

  2. ​原子操作​​:同时访问键值对,保证遍历时数据一致性

  3. ​类型安全​​:使用泛型(如 Map.Entry)避免类型转换

​注意​​:直接修改 Entry 对象(如 entry.setKey())在标准 Java Map 实现中是不允许的(会抛出 UnsupportedOperationException)。正确做法是通过 map.put(newKey, value)map.remove(oldKey) 实现键的替换。

你可能感兴趣的:(开发语言)