首页 > 编程知识 正文

java删除列表元素,java中arraylist的遍历删除

时间:2023-05-05 22:52:20 阅读:244245 作者:2138

         本文主要演示遍历List、Map时的添加、删除元素操作。
         关于List和Map相关的遍历问题,笔者已在《Java常用数据结构基础知识总结(二)》一文中做了简要介绍,如有需要的可以参考,此处不再赘述。

源码如下:

1.基于List的操作

package com.ldl.cn.test;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class TestList {    public static void main(String[] args) {                List<String> list = new ArrayList<>();        list.add("1");        list.add("2");        list.add("3");//        byFor(list);//        byForEach(list);//        byIterator(list);//        byListIterator(list);    }        private static void byFor(List<String> list){            for (int i = 0; i < list.size(); i++) {        if (list.get(i).equals("2")) {//            list.remove(i); //OK//            list.add("666"); //OK        }    }        System.out.println(list);    }        private static void byForEach(List<String> list){            for (String string : list) {        if (string.equals("2")) {//            list.remove(string);//OK//            list.add("666"); //java.util.ConcurrentModificationException        }    }        System.out.println(list);    }        private static void byIterator(List<String> list){                if (list.isEmpty()) {            return ;        }                Iterator<String> iterator = list.iterator();        while (iterator.hasNext()) {            String string = iterator.next();            if (string.equals("1")) {//                list.remove(string); //java.util.ConcurrentModificationException//                iterator.remove();//OK            }            //            if (string.equals("2")) {//                list.add("555"); //java.util.ConcurrentModificationException//            }        }        System.out.println(list);    }        private static void byListIterator(List<String> list){        ListIterator<String> iterator = list.listIterator();        while (iterator.hasNext()) {//            if (iterator.next().equals("2")) {//                iterator.remove();//            }//OK            //            if (iterator.next().equals("1")) {//                iterator.add("666");//            }//OK  注意不能同时使用remove和add        }        System.out.println(list);    }}

2.基于Map的操作

package com.ldl.cn.test;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class TestMap {    public static void main(String[] args) {            Map<String, Object> map = new HashMap<>();            map.put("1", "111");            map.put("2", "222");            map.put("3", "333");        //            byFor(map);//            byIterator(map);            byIterator2(map);    }        private static void byFor(Map<String, Object> map){            if (map.isEmpty()) {                return;            }            for (Map.Entry<String, Object> entry : map.entrySet()) {                if (entry.getValue().equals("111")) {                    map.remove(entry.getKey()); //java.util.ConcurrentModificationException                }            }            System.out.println(map);    }        private static void byIterator(Map<String, Object> map){                Iterator<String> iterator = map.keySet().iterator();        while (iterator.hasNext()) {            if (map.get(iterator.next()).equals("111")) {                iterator.remove(); //OK            }        }        System.out.println(map);    }        private static void byIterator2(Map<String, Object> map){        Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();        while (iterator.hasNext()) {            Map.Entry<String, Object> entry = iterator.next();            if (entry.getValue().equals("111")) {                iterator.remove();//OK//                map.put(entry.getKey(), entry.getValue()+"666");//OK            }        }        System.out.println(map);    }    }

读者可以尝试运行,运行结果在源码中以注释体现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。