Java中的Map集合遍历总结(详尽版)

因为Map集合中的键值对排列无序,所以不能用传统的for循环来遍历,只能使用加强循环(for-each)和迭代器进行遍历。

让我们通过例子来了解Map集合的遍历:

package gather;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;//引包
public class Test {
	public static void main(String[] args) {
		Map<String,Integer> scores = new HashMap<String,Integer>();
		scores.put("张三", 100);
		scores.put("李四", 70);
		scores.put("王五", 80);
		scores.put("赵六", 72);//先存入几对数据

		//遍历数组:

		//第一种:使用keySet(),用于返回Map集合中所有key组成的Set集合
		Set<String> names = scores.keySet();//获取Map集合中所有key-value中的key组成的Set集合(说白了,names里存的都是key)
		System.out.println(names);//[李四, 张三, 王五, 赵六](不一定是这个顺序)
		//a、加强循环
		for(String str:names){
			int value = scores.get(str);
			System.out.println(value);
		}
		//70 100 80 72 (不一定是这个顺序)
		//b、迭代器
		Iterator<String> iterator = names.iterator();//将集合中的数据做转存,也就是copy
		while(iterator.hasNext()){//hasNext()用于判断集合中是否含有下一个元素
			int value = scores.get(iterator.next());
			System.out.println(value);
		}
		//70 100 80 72 (不一定是这个顺序)
		

		//第二种:使用entrySet(),将Map集合中的每一个key-value转换为一个Entry对象,并返回所有的Entry对象组成的Set集合
		Set<Entry<String,Integer>> entries = scores.entrySet();
		System.out.println(entries);//[李四=70, 张三=100, 王五=80, 赵六=72]
		//a、加强循环
		for(Entry<String,Integer> entry : entries){
			String name = entry.getKey();
			int value = entry.getValue();
			System.out.println(name+"="+value);
		}
		//李四=70  张三=100  王五=80  赵六=72

		//b、迭代器
		Iterator<Entry<String, Integer>> iterator1 = entries.iterator();
		while(iterator.hasNext()){
			Entry<String,Integer> entry = iterator1.next();
			String name = entry.getKey();
			int value = entry.getValue();
			System.out.println(name+"="+value);
		}
		//李四=70  张三=100  王五=80  赵六=72
	}
	
}

发布了34 篇原创文章 · 获赞 8 · 访问量 696

猜你喜欢

转载自blog.csdn.net/weixin_45720626/article/details/105499308