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