遍历HashMap
Map<Integer, String> map = new HashMap<>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3, "ccc");
map.put(4, "ddd");
-
普遍使用,二次取值
for(String key : map.keySet()){ System.out.println(key + ":" + map.get(key)); }
-
迭代器 entrySet
Iterator<Map.Entry<Integer, String>> mapiter = map.entrySet().iterator(); while(mapiter.hasNext()) { @SuppressWarnings("unchecked") Map.Entry<Integer, String> entry = mapiter.next(); System.out.println(entry.getKey() + ": " + entry.getValue()); }
-
推荐,尤其是容量大时
for(Map.Entry<Integer, String> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }
-
遍历所有的value,但不能遍历key
for(String str : map.values()) { System.out.println(str); }
-
迭代器keySet
Iterator<Integer> iter = map.keySet().iterator(); while(iter.hasNext()) { int key = iter.next(); System.out.println(key + ": " + map.get(key)); }
-
lambda表达式
map.forEach((key, value) ->{ System.out.println(key + ": " + value); });
-
Streams API单线程
map.entrySet().stream().forEach((entry) ->{ System.out.println(entry.getKey() + ": " + entry.getValue()); });
Iterator遍历之动态删除
Map<Integer, String> map = new HashMap<>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3, "ccc");
map.put(4, "ddd");
Iterator<Integer> iter = map.keySet().iterator();
while(iter.hasNext()) {
int key = iter.next();
System.out.println(key + ": " + map.get(key));
if(key == 2) {
iter.remove();
}
}
Iterator<Map.Entry<Integer, String>> mapiter = map.entrySet().iterator();
while(mapiter.hasNext()) {
@SuppressWarnings("unchecked")
Map.Entry<Integer, String> entry = mapiter.next();
System.out.println(entry.getKey() + ": " + entry.getValue());
if(entry.getKey() == 2) {
mapiter.remove();
}
}
Arrays.asList()
使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常
【说明】asList()的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组
【注意】
- 传递的数组必须是对象数组,而不是基本类型
- 使用集合的修改方法add()/remove()/clear()会抛出异常
List<String> list = new ArrayList<String>(Arrays.asList("aaa", "bbb", "ccc"))