因为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
}
}