Java List如何移除不符合條件的數據


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這條道路上越走越遠,越走越順。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM