欢迎关注微信公众号:数据科学与艺术 作者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
异常的发生。