遍历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.Entry遍历Map

遍历Map的方法

Map对象中的keyset()entryset()和Map.Entry 以及 四种遍历map的方式

关于HashMap遍历,为什么要用entry

另一种遍历Map的方式: Map.Entry 和 Map.entrySet()

Thymeleaf遍历Map