• 遍历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

  • 相关阅读:
    VC++对话框笔记
    STL中用erase()方法遍历删除元素
    VC++中不小心选错工程类型的解决办法
    directX中常用的数学计算
    VC++中string、char* 转换为LPCSTR
    判断空间上点是否在直线上
    vc6.0插件
    VC++常用定义(如SAFE_DELETE等)
    关于控件的AutoSize属性影响界面布局的问题解决
    C#判断日期是否正确(1900~今年,月份,天数)
  • 原文地址:https://www.cnblogs.com/lonely-buffoon/p/5575420.html
Copyright © 2020-2023  润新知