大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说1.6 Java遍历Map集合[通俗易懂],希望能够帮助大家进步!!!
Java遍历Map集合的四种方式Map 集合的遍历与 List 和 Set 集合不同。Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。Map 以及实现 Map 的接口类(如 HashMap、TreeMap、LinkedHashMap、Hashtable 等)都可以用以下几种方式遍历。
1)在 for 循环中使用 entries 实现 Map 的遍历(最常见和最常用的)。
代码语言:javascript复制 import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map
map.put("父亲", "奥特曼之父");
map.put("母亲", "奥特曼之母");
map.put("儿子", "奥特曼之子");
//entrySet():返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry
for(Map.Entry
String mapKey=entry.getKey();
String mapValue=entry.getValue();
System.out.println(mapKey+","+mapValue);
}
}
}运行结果:
代码语言:javascript复制父亲,奥特曼之父
母亲,奥特曼之母
儿子,奥特曼之子2)使用 for-each 循环遍历 key 或者 values,一般适用于只需要 Map 中的 key 或者 value 时使用。性能上比 entrySet 较好。
代码语言:javascript复制import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map
map.put("队长", "心脏病");
map.put("队员一", "冠心病");
map.put("队员二", "失心病");
//打印键集合
for(String key:map.keySet()){
System.out.println(key);
}
//打印值集合
for(String value:map.values()){
System.out.println(value);
}
}
}运行结果:
代码语言:javascript复制队长
队员一
队员二
心脏病
冠心病
失心病3)使用迭代器(Iterator)遍历
Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry
代码语言:javascript复制public class Test {
public static void main(String[] args) {
Map
map.put("队长", "心脏病");
map.put("队员一", "冠心病");
map.put("队员二", "失心病");
Iterator
while(entries.hasNext()){
Entry
String key=entry.getKey();
String value=entry.getValue();
System.out.println(key+","+value);
}
}
}运行结果:
代码语言:javascript复制队长,心脏病
队员一,冠心病
队员二,失心病4)通过键找值遍历,这种方式的效率比较低,因为本身从键取值是耗时的操作。
代码语言:javascript复制import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Test {
public static void main(String[] args) {
Map
map.put("队长", "心脏病");
map.put("队员一", "冠心病");
map.put("队员二", "失心病");
for(String key:map.keySet()){
String value=map.get(key);
System.out.println(key+":"+value);
}
}
}代码语言:javascript复制队长:心脏病
队员一:冠心病
队员二:失心病