遍历ArrayList删除指定元素


清空List,直接调用clear()方法,或者直接赋值为null便可。那删除List中指定元素呢?

遍历list,遍历到符合条件的元素,then remove()?

我们来看下面三种代码就知道结果啦。

    public static void removeList1() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("4");
        list.add("5");
        System.out.println("删除前集合的长度为:" + list.size()+":"+list);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(i + "---" + list.get(i));
            list.remove(i);
        }
        System.out.println("删除后集合的长度为:" + list.size()+":"+list);
    }

删除前集合的长度为:6:[1, 2, 3, 4, 4, 5]
0---1
1---3
2---4
删除后集合的长度为:3:[2, 4, 5]

    public static void removeList2() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("4");
        list.add("5");
        System.out.println("删除前集合的长度为:" + list.size()+":"+list);
        for (int i = 0, len = list.size(); i < len; i++) {
            System.out.println("len="+len+";i="+i+";删除元素:"+list.get(i));
            list.remove(i);
            len--;
            i--;
        }
        System.out.println("删除后集合的长度为:" + list.size()+":"+list);
    }

删除前集合的长度为:6:[1, 2, 3, 4, 4, 5]
len=6;i=0;删除元素:1
len=5;i=0;删除元素:2
len=4;i=0;删除元素:3
len=3;i=0;删除元素:4
len=2;i=0;删除元素:4
len=1;i=0;删除元素:5
删除后集合的长度为:0:[]

public static void removeList3() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("4");
        list.add("5");
        System.out.println("删除前集合的长度为:" + list.size()+":"+list);
        Iterator<String> it=list.iterator();
        while(it.hasNext()&&!it.next().equals("")){
            it.remove();
        }
        System.out.println("删除后集合的长度为:" + list.size()+":"+list);
    }

删除前集合的长度为:6:[1, 2, 3, 4, 4, 5]
删除后集合的长度为:0:[]

From:

https://blog.csdn.net/liusong0605/article/details/48105103

 

之前在面试的时候遇到过这样一个问题,

list的大小为100,其中存放的值分别为1,2,3,... , 100, 要求删除list中能被3整除的元素,返回新的list。

考察的也是ArrayList数组删除时,所删除的元素后面的元素都会前移这个知识点。

//list的大小为100,其中存放的值分别为1,2,3,... , 100,
        //要求删除list中能被3整除的元素,返回新的list
        for(int i=1;i<=100;i++){
            list.add(i);
        }
        int lengh=list.size();
for(int i=0;i<lengh;i++){ if(list.get(i)%3==0){ list.remove(i); i--; lengh--; } }
for(Integer num : list){ System.out.print(num + " "); } System.out.println();

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM