遍历map和删除map中的一个entry
Posted 寂寞的小丑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遍历map和删除map中的一个entry相关的知识,希望对你有一定的参考价值。
一.最常见的,需要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
以上是关于遍历map和删除map中的一个entry的主要内容,如果未能解决你的问题,请参考以下文章
Map对象中的keyset()entryset()和Map.Entry 以及 四种遍历map的方式