首页 > 编程语言 > 详细

Java List如何移除不符合条件的数据

时间:2020-12-16 18:55:21      阅读:125      评论:0      收藏:0      [点我收藏+]

1.普通人的第一反应(包括我自己),是for循环整个List,然后在循环体里面进行if条件判断,然后再调用list.remove(obj)方法来移除某个元素。

代码示例

 List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);
        list.forEach(i -> {
            if(i%2==0){
                list.remove(i);
            }
        });

        list.forEach(i -> {
            System.out.println(i);
        });

 

但是如果你也这么写过的话,肯定知道这条路是行不通的,程序运行到这里会报异常。

2.于是我们换了一种思路来考虑这个问题,那就是通过Iterator来实现这个效果

代码示例

List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);

        Iterator<Integer> iterator = list.listIterator();
        while (iterator.hasNext()) {
            Integer i = iterator.next();
            if(i%2==0){
                iterator.remove();
            }
        }

        list.forEach(i -> {
            System.out.println(i);
        });

首先,这种方案是可以行得通的,只是代码略微有些复杂。

3.于是我们想到了第三种方案,那就是直接通过lambda表达式来实现。

代码示例

List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);

        list.removeIf(i -> i%2==0);

        list.forEach(i -> {
            System.out.println(i);
        });

只要一行代码就可以实现整个处理,是不是显得很高大上。

好了,这个简单的小测试就讲到这里。

不过这也说明了一个道理,想要到达一个目的地,有很多条路可以选择,至于怎样选择,选择什么的路线,这就要看个人了。

最后,希望大家可以在Java这条道路上越走越远,越走越顺。

Java List如何移除不符合条件的数据

原文:https://www.cnblogs.com/boboblue/p/14145397.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!