1.6 Java遍历Map集合[通俗易懂]

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说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=new HashMap();

map.put("父亲", "奥特曼之父");

map.put("母亲", "奥特曼之母");

map.put("儿子", "奥特曼之子");

//entrySet():返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry

for(Map.Entry entry:map.entrySet()){

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=new HashMap();

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。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

代码语言:javascript复制public class Test {

public static void main(String[] args) {

Map map=new HashMap();

map.put("队长", "心脏病");

map.put("队员一", "冠心病");

map.put("队员二", "失心病");

Iterator> entries=map.entrySet().iterator();

while(entries.hasNext()){

Entry entry=entries.next();

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=new HashMap();

map.put("队长", "心脏病");

map.put("队员一", "冠心病");

map.put("队员二", "失心病");

for(String key:map.keySet()){

String value=map.get(key);

System.out.println(key+":"+value);

}

}

}代码语言:javascript复制队长:心脏病

队员一:冠心病

队员二:失心病