Map里面有key和value,一个key对应一个value,key跟value组合起来的一个组是entry,想要取出这个组里的key和value用entry的迭代器迭代即可。
Map.entrySet()是把HashMap类型的数据转换成集合类型
Map.entrySet().iterator()是去获得这个集合的迭代器,保存在iterator 里面
迭代器这么用:
while(iterator.hasNext()) { // 判断下一个元素是否有后值
Entry obj = iterator .next();//获得map中的每一个键值对
}
//代码段
import java.util.*;
public class Test{
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<String, List<String>>();
List<String> name1 = new ArrayList<>();
List<String> name2 = new ArrayList<>();
name1.add("张三");
name1.add("李四");
name1.add("王二");
name2.add("张三");
name2.add("李四");
name2.add("王二");
map.put("1",name1);
map.put("2",name2);
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, List<String>>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, List<String>> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}