Map是java中的接口,Map.Entry是Map的一个内部接口。
Map提供了一些常用方法,如keySet()、entrySet()等方法。
keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。
Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
map不能直接使用迭代器因为map没有像set继承Collection所以得如下方式使用
由以上可以得出,遍历Map的常用方法:
1. Map map = new HashMap();
Irerator iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
![](/qrcode.jpg)
Map.Entry entry = iterator.next();
Object key = entry.getKey();
//
}
或者
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {}
2.Map map = new HashMap();
Set keySet= map.keySet();
Irerator iterator = keySet.iterator;
while(iterator.hasNext()) {
Object key = iterator.next();
Object value = map.get(key);
//
}
另外,还有一种遍历方法是,单纯的遍历value值,Map有一个values方法,返回的是value的Collection集合。通过遍历collection也可以遍历value,如
Map map = new HashMap();
Collection c = map.values();
Iterator iterator = c.iterator();
while(iterator.hasNext()) {
Object value = iterator.next();
}
1 import java.util.Collection; 2 import java.util.HashMap; 3 import java.util.Iterator; 4 import java.util.Map; 5 import java.util.Set; 6 7 public class MapDemo { 8 9 public static void main(String[] args) { 10 Map<Integer,String> map = new HashMap<Integer,String>(); 11 12 13 map.put(8, "zhaoliu"); 14 map.put(9, "zhaoliu"); 15 map.put(1, "xiaoqiang"); 16 map.put(6, "wangcai"); 17 map.put(7, "zhaoliu"); 18 map.put(99, "zhaoliu"); 19 map.put(87, "xiaoqiang"); 20 map.put(42, "wangcai"); 21 22 show1(map); 23 24 show2(map); 25 26 showValue(map); 27 28 } 29 30 public static void showValue(Map<Integer, String> map) { 31 Collection<String> values = map.values(); 32 Iterator<String> it = values.iterator(); 33 while (it.hasNext()) 34 { 35 System.out.println(it.next()); 36 } 37 } 38 39 public static void show2(Map<Integer, String> map) { 40 //通过Map转成Set就可以迭代 41 //找到了另一种方法。 entrySet 42 //该方法将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map.Entry类型(结婚证) 43 //就跟Set<Integer> xxxx=new HashSet<>();中的<Integer>跟<Map.Entry<Integer,String>>是一样的
44 Set<Map.Entry<Integer, String>> entrySet = map.entrySet(); 45 Iterator<Map.Entry<Integer, String>> it = entrySet.iterator(); 46 /* 47 *也可以写成 Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); 48 */ 49 50 while(it.hasNext()) 51 { 52 Map.Entry<Integer, String> me = it.next(); 53 Integer key = me.getKey(); 54 String value = me.getValue(); 55 System.out.println(key+"::"+value); 56 57 } 58 } 59 60 public static void show1(Map<Integer, String> map) { 61 //取出map中的所有元素。 62 //原理:通过keySet方法获取map中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键, 63 //在对每一个键通过map集合的get方法获取其对应的值即可。 64 65 Iterator<Integer> it = map.keySet().iterator(); 66 /* 67 * 相当于 Set<Integer> keySet = map.keySet(); 68 * Iterator<Integer> it = keySet.iterator(); 69 * 70 */ 71 72 while (it.hasNext()) 73 { 74 Integer key = it.next(); 75 String value = map.get(key); 76 System.out.println(key+"="+value); 77 } 78 } 79 80 }