

欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199
在Java的 Map 中,如果要在循环中删除元素,需要使用 Iterator 来遍历和删除元素,而不是使用普通的 for 循环遍历。这是因为在使用普通的 for 循环遍历时,如果在循环过程中直接调用 map 的 remove 方法删除元素,会导致 ConcurrentModificationException 异常。
Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
if (entry.getValue().equals("B")) {
iterator.remove();
}
}
System.out.println(map);上述代码首先创建了一个 HashMap 对象,并添加了三个键值对。然后通过 entrySet().iterator() 方法获取到 map 的迭代器,使用 while 循环进行遍历。通过 iterator.next() 方法获取当前迭代的元素,判断其值是否为 “B”,如果是,则使用 iterator.remove() 方法删除该元素。最后打印出删除元素后的 map,即输出 {1=A, 3=C}。
Map,以下是几种常用的方式:entrySet() 方法遍历 Map 的键值对:Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
for (Map.Entry<Integer, String> entry : map.entrySet()) {
Integer key = entry.getKey();
String value = entry.getValue();
// 处理键值对
}keySet() 方法遍历 Map 的键,然后通过键获取对应的值:Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
for (Integer key : map.keySet()) {
String value = map.get(key);
// 处理值
}values() 方法遍历 Map 的值:Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
for (String value : map.values()) {
// 处理值
}Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.forEach((key, value) -> {
// 处理键值对
});需要注意的是,无论使用哪种遍历方式,都应该根据具体需求来选择最合适的方式。另外,如果需要在遍历时对 Map 进行修改(添加、删除元素),应使用 Iterator 进行操作,以避免 ConcurrentModificationException 异常的发生。