一.最常見的,需要key和value都需要時
public static void main(String[] args) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); map.put(33, 333); map.put(22, 222); map.put(11, 111); for(Map.Entry<Integer, Integer> entry:map.entrySet()){ System.out.println("key:"+entry.getKey()+" value:"+entry.getValue()); } }
當map為空時,就會報空指針,所以在map!=null的條件下遍歷
二.只需要map中的所有key或者只要map中的所有value
public static void main(String[] args) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); map.put(33, 333); map.put(22, 222); map.put(11, 111); List<Integer> list = new ArrayList<>(); for(Integer key : map.keySet()){ System.out.println("key:"+ key); list.add(key); } System.out.println(list); }
public static void main(String[] args) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); map.put(33, 333); map.put(22, 222); map.put(11, 111); List<Integer> list = new ArrayList<>(); for(Integer value : map.values()){ System.out.println("value:"+value); list.add(value); } System.out.println(list); }
三.使用Iterator遍歷,加強功能:在遍歷過程中刪除個別entry
public static void main(String[] args) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); map.put(33, 333); map.put(22, 222); map.put(11, 111); Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator(); while(entries.hasNext()){ Map.Entry<Integer, Integer> entry = entries.next(); System.out.println("key:"+ entry.getKey()+" value:"+entry.getValue()); } }
刪除個別entry
public static void main(String[] args) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); map.put(33, 333); map.put(22, 222); map.put(11, 111); Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator(); while(entries.hasNext()){ Map.Entry<Integer, Integer> entry = entries.next(); if(entry.getKey().equals(22)){ entries.remove(); } //在entries的remove之前entries.next()已經把下一個給了entry //就是刪除22前,已經把22給了entry //再打印entry時,22已經在entry了 //但是現在entries里已經沒有22了 System.out.println("key:"+ entry.getKey()+" value:"+entry.getValue()); } System.out.println("這時打印***********"); //再打印entries,就已經沒有22了 Iterator<Map.Entry<Integer,Integer>> entries2 = map.entrySet().iterator(); while(entries2.hasNext()){ Map.Entry<Integer, Integer> entry = entries2.next(); System.out.println("key:"+ entry.getKey()+" value:"+entry.getValue()); } }
在用Iterator.remove()方法時,要在循環之外再打印map