1:通过查看Map集合的API,发现没有iterator方法,那么双列集合如何迭代呢?
(1) 根据键获取值 (Set集合有iterator方法)
Set<K> keySet():获取集合中所有键的集合
V get(Object key):根据键获取值
(2) 根据键值对对象,获取键和值
Set<Map.Entry<K,V>> entrySet():
1)获取所有键值对对象的集合
2)遍历键值对对象的集合,获取到每一个键值对对象
3)根据键值对对象找键和值
2:举个例子
package henu.rjxy.test;
import java.util.*;
public class Sample {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "张三");
map.put(2, "李四");
map.put(3, "王五");
map.put(4, "赵六");
// 1. 根据键获取值
/*Set<Integer> keySet = map.keySet(); // 获取所有键的集合
Iterator<Integer> it = keySet.iterator(); // 获取迭代器
while (it.hasNext()) {
Integer key = it.next();// 获取键
String value = map.get(key); // 通过键获取值
System.out.println(key + "=" + value);
}
// 增强for循环写法
for (Integer key : map.keySet()) { // map.keySet()是所有键的集合
System.out.println(key + "=" + map.get(key));
}*/
// 2. 根据键值对对象,获取键和值
// Map.Entry说明Entry是Map的内部接口,将键和值封装成了Entry对象,并存储在Set集合中
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
// 使用迭代器来获取对象
Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();
while (it.hasNext()) {
// 获取每一个entry对象
Map.Entry<Integer, String> entry = it.next();
Integer key = entry.getKey(); // 根据键值对对象获取键
String value = entry.getValue(); // 根据键值对对象获取值
System.out.println(key + "=" + value);
}
System.out.println("=====================================");
// 增强for循环写法 (推荐写法)
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}