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

2022-04-21 08:10:34 浏览数 (1)

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

运行结果:

代码语言: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<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);
		}
	}
}

运行结果:

代码语言:javascript复制
队长
队员一
队员二
心脏病
冠心病
失心病

3)使用迭代器(Iterator)遍历

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

代码语言:javascript复制
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);
		}
	}
}

运行结果:

代码语言: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<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);
		}
	}
}
代码语言:javascript复制
队长:心脏病
队员一:冠心病
队员二:失心病

0 人点赞