版权声明:转载请申明原创地址 https://blog.csdn.net/pw191410147/article/details/81474879
方式一:也是最常用的,通常在key和value都需要的情况下使用。
Map<String, String> map = new HashMap<>();
map.put("1", "张三");
map.put("2", "李四");
map.put("3", "王五");
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
System.out.println("键---"+key);
String value = entry.getValue();
System.out.println("值---"+value);
}
方式二:在for-each循环中遍历keys或values。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
此方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
Map<String, String> map = new HashMap<>();
map.put("1", "张三");
map.put("2", "李四");
map.put("3", "王五");
for(String key:map.keySet()) {
System.out.println("键---"+key);
}
for(String value:map.values()) {
System.out.println("值---"+value);
}
方式三:使用Iterator遍历
Map<String, String> map = new HashMap<>();
map.put("1", "张三");
map.put("2", "李四");
map.put("3", "王五");
Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, String> next = iterator.next();
System.out.println("key---" + next.getKey() + "value-----" + next.getValue());
}
方式四:通过键找值遍历(效率低)
作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。
总结
如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。
Map<String, String> map = new HashMap<>();
map.put("1", "张三");
map.put("2", "李四");
map.put("3", "王五");
for (String key : map.keySet()) {
System.out.println("key----" + key);
System.out.println("value----" + map.get(key));
}