map的遍歷問題
阿新 • • 發佈:2021-07-02
在集合的遍歷中說的迭代器,是針對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方法