1. 程式人生 > 其它 >map的遍歷問題

map的遍歷問題

在集合的遍歷中說的迭代器,是針對Collection來講的 map沒有迭代器【Map介面與Collection介面並列】
如果僅僅是想看map裡邊的內容 直接sout.map就可以了
想要用到迭代器、增強for 那就需要通過元檢視 [ map.entrySet( ) / keySet( ) / values( )] 把map轉換成所需的Collection集合

這樣的遍歷操作的原因通常都是想單獨的把map裡邊的key、value調出來

例如將來存到資料庫裡邊的表中 可以分開不同的欄位,重點是分開的取鍵值對 而不是簡單的sout
反過來呢,後邊可以用json這個字串反過來從資料庫裡邊取出來資料

具體如下:

@Test
public void test5() {
    Map map = new HashMap();
    map.put("AA", 123);
    map.put(45, 1234);
    map.put("BB", 56);
	//遍歷所有的key集:keySet()
    Set set = map.keySet();
	
	// Iterator iterator = set.iterator();
	// while (iterator.hasNext()){
	// System.out.println(iterator.next());
	//}
	
    for (Object o : set) {
        System.out.println(o);
    }

    System.out.println();
    //遍歷所有的value集:values()
    Collection values = map.values();
    Iterator iterator = values.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }

    System.out.println();
    //遍歷所有entry值
    //方式一:迭代器 iterator遍歷
    Set entrySet = map.entrySet(); //1.通過entrySet() 把map轉為Set
    Iterator iterator1 = entrySet.iterator(); //2.才可呼叫迭代器
    while (iterator1.hasNext()){ //3.檢測是否有下一個元素
        Object obj = iterator1.next();//4.①指標下移 ②將下移以後集合位置上的元素返回給obj
        Map.Entry entry = (Map.Entry)obj; //5.將得到的Object obj 強轉為 Map.Entry 呼叫他的方法
        System.out.println(entry.getKey() + "--->" + entry.getValue());
    }

    System.out.println();
    //方式二:自己拼接一個entry
    Set keySet = map.keySet();
    Iterator iterator2 = keySet.iterator();
    while (iterator2.hasNext()){
        Object obj = iterator2.next();
        //通過 iterator2.next() 獲取key值,再用map.get()方法獲得對應的value 相當於自己拼了一個entry
        System.out.println(obj + "===" + map.get(obj));
    }
}```

常用map方法