一,Map集合的第一种迭代
Map集合的第一种迭代,通过get(key)方法,根据键去获取值
package com.wsq.map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo2_Iterator {
/*** 通过查看Map集合的API发现没有Iterator方法,那么双列集合如何迭代呢?* Map集合的第一种迭代形式* 迭代==遍历* */public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();//双列集合,键是String类型,值是Integer类型map.put("张三", 23);map.put("李四", 24);map.put("王五", 25);map.put("赵六", 26);/*//根据键,去获取值 Integer wsq = map.get("张三"); //获取map双列集合中的键System.out.println(wsq); //打印输出map双列结合中的值*//** ①双列集合的第一种遍历形式,通过迭代器进行遍历//获取所有键Set<String> keySet = map.keySet(); //map.keySet():获取所有的键的集合,键是String类型Iterator<String> it = keySet.iterator(); //获取迭代器 itwhile(it.hasNext()){ //判断集合中是否有元素;iterator():如果迭代器具有多个元素,则返回 trueString key = it.next(); //获取每一个键,键是String类型;next():返回迭代的下一个元素。Integer value = map.get(key); //根据键获取值,值是Integer类型;get(key):指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null System.out.println(key + "=" + value ); //打印键和值}*//*//②双列集合的第二种遍历形式,使用增强for循环遍历 for (String key : map.keySet()) { //for(临时变量,也就是想要获取的变量,这里是想要通过键去获取值,String key 表示的是每一个键:容器的名字,这里是 map.ketSet()) map.ketSet()是所有键的集合,拿到所有的键System.out.println(key + "=" + map.get(key)); //增强for循环迭代双列集合第一种方式}*/}}
二,Map集合的第二种迭代
Map集合的第二种迭代,根据键值对对象(也就是把键值对当成一个对象),获取键和值
也就是把双列集合的键值对,变成单列集合的键值对对象,然后遍历这个集合,获取每一个键值对对象,根据键值对对象获取键和值
解释一下Map.Entry
package com.wsq.map;public class Demo4_MapEntry {public static void main(String[] args) {}}interface Inter{interface Inter2{public void show();}
}class wsq implements Inter.Inter2{//这里的wsq类想继承Inter2,当出现Inter.Inter2,也就是说,Inter2是Inter的内部接口//同样的道理,Map.Entry,也就是说,Entry是Map里面的一个内部接口@Overridepublic void show() { //实现接口要重写人家里面的抽象方法}}
package com.wsq.map;import java.security.KeyStore.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo3_Iterator {/*** Map集合的第二种迭代,根据键值对对象,获取键和值* A:键值对对象找键和值思路* * 获取所以键值对对象的集合* * 遍历键值对对象的集合,获取到每一个键值对对象* * 根据键值对对象找键和值* */public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("张三", 23);map.put("李四", 24);map.put("王五", 25);map.put("赵六", 26);/*//①通过迭代器去遍历Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); //Map.Entry说明Entry是Map的内部接口,将键和值封装成了Entry对象,并存储在Set集合中;遍历双列集合里面存储的都是Entry对象,所以通过迭代器迭代的应该也是Entry对象Iterator<Map.Entry<String, Integer>> it = entrySet.iterator(); //通过迭代器去获取每一个对象,<Map.Entry<String, Integer>>泛型的迭代应该一致while(it.hasNext()){ //hasNext():如果迭代器具有多个元素,则返回 true;通过循环开始获取每一个Entry对象Map.Entry<String, Integer> wsq = it.next(); //①父类引用指向子类对象;这里的wsq就代表每一个Entry对象//Entry<String, Integer> wsq = it.next(); //②直接获取的是子类对象String key = wsq.getKey(); //Set<Map.Entry<K,V>>下有个getKey():返回与此项对应的键;根据键值对对象获取对应的键Integer value = wsq.getValue(); //Set<Map.Entry<K,V>>下有个getValue():返回与此项对应的值;根据键值对对象获取对应的值System.out.println(key + "=" + value);}*//*//②通过增强for循环遍历 for (Map.Entry<String, Integer> wsq : map.entrySet()) { //for(定义一个临时变量的数据类型跟Entry对象的数据类型一致也就是Map.Entry<String, Integer> wsq代表每一个键值对象 : )System.out.println(wsq.getKey() + "=" + wsq.getValue()); //通过键值对象来获取它里面的getKey()和getValue();getKey():返回与此项对应的键 getValue():返回与此项对应的值}*/}}