Map集合中的key值对排列无序,因此不能使用传统for循环遍历。常用的遍历方式有两大种。
利用Set集合
获取Map集合中所有key-value中的key,组成Set集合,使用keySet(),用于返回Map集合中所有key组成的Set集合
a.加强for循环
b.迭代器
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.HashMap;
import java.util.Iterator;
public class Test {
public static void main(String[] args){
Map<String,Integer> scores = new HashMap<String,Integer>();
scores.put("Jim", 20);
scores.put("Lucy", 10);
Set<String> names = scores.keySet();//组成Set集合
//a
for (String key : names) {
System.out.println(scores.get(key));
}
//b
Iterator<String> iterator = names.iterator();
while(iterator.hasNext()) {//判断下一位是否有值
String key = iterator.next();
int value = scores.get(key);
System.out.println(value);
}
}
}
利用Entry对象
将Map集合中的每一个key-value转换为一个Entry对象,并返回所有的Entry对象组成的Set集合
a.加强循环
b.迭代器
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.HashMap;
import java.util.Iterator;
public class Test {
public static void main(String[] args){
Map<String,Integer> scores = new HashMap<String,Integer>();
scores.put("Jim", 20);
scores.put("Lucy", 10);
Set<Entry<String,Integer>> entries = scores.entrySet();
//a
for(Entry<String,Integer> entry : entries){
String name = entry.getKey();
int value = entry.getValue();
System.out.println(name+"="+value);
}
//b
Iterator<Entry<String, Integer>> iterator = entries.iterator();
while(iterator.hasNext()){
Entry<String,Integer> entry = iterator.next();
String name = entry.getKey();
int value = entry.getValue();
System.out.println(name+"="+value);
}
}
}
}