一,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():返回與此項對應的值}*/}}