DESKTOP-7803S27_20200911-吴远亮
问题
练习 Map 集合的遍历方式。
解决方法
因为java.util.Map接口没有继承java.lang.Iterable接口,因此不可以通过迭代器或for-each来直接迭代Map集合,所以可以通过以下三个方式达到遍历的效果。
方式一:通过keySet() 方法可以获得Map实例中所有的key组成的Set集合,随后迭代key组成的Set集合
public class MapTest1 {
public static void main(String[] args) {
Map<String,Integer> map=Map.of("AAA", 11,"BBB", 22, "CCC", 33, "DDD", 44, "EEE", 55);
System.out.println(map);
System.out.println("- - - - - - - - - - - - - - -");
Set<String> set=map.keySet();
Iterator<String> iter=set.iterator();
while(iter.hasNext()) {
String s=iter.next();
Integer inte=map.get(s);
System.out.println(s+"==>>"+inte);
}
System.out.println("- - - - - - - - - - - - - - - - - - - ");
for(String s:set) {
Integer inte=map.get(s);
System.out.println(s+"--->>"+ inte);
}
}
}
方式二:通过 entrySet() 方法可以获得Map实例中所有的Entry组成的Set集合
public class MapTest2 {
public static void main(String[] args) {
Map<String , Integer> map=Map.of("AAA", 11,"BBB", 22, "CCC", 33, "DDD", 44, "EEE", 55);
Set<Map.Entry<String,Integer>> set=map.entrySet();
Iterator<Map.Entry<String,Integer>> iter=set.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
System.out.println("- - - - - - - - - - - - - - - - - - - - ");
for(Map.Entry<String,Integer> entry : set) {
System.out.println(entry);
}
}
}
方式三:通过 values() 可以获得Map实例中所有的value组成的Collection集合(因为一个value 可以重复,所以不能放入 set 集合,而且也不能通过value 来获得 key ,所以本方式只能获得 value 的遍历)
public class MapTest3 {
public static void main(String[] args) {
Map<String,Integer> map=Map.of("AAA", 11,"BBB", 22, "CCC", 33, "DDD", 44, "EEE", 55);
Collection<Integer> coll=map.values();
for(Integer inte : coll) {
System.out.println(inte);
}
System.out.println("- -- - -- - --- ------------- -- ");
Iterator<Integer> iter=coll.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
}
}
吐槽
这几天的天气都有点热,买的风扇终于到了,爽呀。
点赞