遍历map的三种方式
public static void main(String[] args) {
Map<Integer, String> map= new HashMap();
int num = 0;
map.put(++num, "a");
map.put(++num, "b");
map.put(++num, "c");
map.put(++num, "d");
// 方式1: keySet() 获取key的set集
for (Integer key : map.keySet()) {
System.out.print("[" + key + ":" + map.get(key) + "]\t");
}
System.out.println("\n============================================");
// 方式2:map.entrySet() 获取Map.Entry的set集合
Set<Map.Entry<Integer, String>> entries = map.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
System.out.print("[" + entry.getKey() + ":" + entry.getValue() + "]\t");
}
System.out.println("\n============================================");
// 方式3:使用迭代器
Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();
while(iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
System.out.print("[" + entry.getKey() + ":" + entry.getValue() + "]\t");
}
}
遍历时删除元素
在遍历map时如果直接map.remove(key)会报异常ConcurrentModificationException
所以我们一般使用迭代器的iterator.remove()
另外,任何集合在遍历时要进行删除操作时都需要使用迭代器
public static void main(String[] args) {
Map<Integer, String> map= new HashMap();
int num = 0;
map.put(++num, "a");
map.put(++num, "b");
map.put(++num, "c");
map.put(++num, "d");
Set<Map.Entry<Integer, String>> entries = map.entrySet();
Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();
while(iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
if (1 == entry.getKey()) {
iterator.remove();
}
}
System.out.println(map.toString());
}