Map本身没有迭代器,因此Map需要借助外物来进行迭代,这其中包括各种方法和接口。下面我们就来看看常见的Map的4种迭代方法。
1.利用Map接口的values()方法,返回此映射中包含的值的Collection(值不唯一),
然后通过Collecion的迭代器进行迭代。(只需要Value,不需要Key的时候)
public class MapDemo {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer,String>();
method_2(map);
}
public static void method_2(Map<Integer,String> map){
map.put(8,"zhaoliu");
map.put(2,"zhaoliu");
map.put(7,"xiaoqiang");
map.put(6,"wangcai");
Collection<String> values = map.values();
Iterator<String> it2 = values.iterator();
while(it2.hasNext()){
System.out.println(it2.next());
}
}
}
2.通过keySet方法获取map中所有的键所在的Set集合(Key和Set的都具有唯一性),
再通过Set的迭代器获取到每一个键,再对每一个键通过Map集合的get方法获取其对应的值即可。
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);
}
3.利用Map的内部接口Map.Entry<K,V>使用iterator。
通过Map的entrySet()方法,将键和值的映射关系作为对象存储到Set集合中。
这个映射关系的类型就是Map.Entry类型(结婚证)。
再通过Map.Entry对象的getKey和getValue获取其中的键和值。
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();
while(it.hasNext()){
Map.Entry<Integer, String> me = it.next();
Integer key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}
4.通过Map.entrySet()方法遍历key和value(推荐,尤其是容量大时)
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
我们在使用这些迭代方法时要考虑到实际情况,随机应变,才能发挥每种方法最好的作用。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54