Java元素刪除結合的方法集合

首先要看你的List是怎麼生成的,比如:

List<String> strList = Arrays.asList("a", "b", "aa", "ab", "ba");

這種方式生成的List是不能改變的(fixed size),具體可以參見源碼。

比如下面這種方式生成的List是可以改變的:

List<String> strList2 = new ArrayList<>();

strList2.add("a");

strList2.add("ab");

strList2.add("ac");

strList2.add("ad");

以下測試都採用這個List.

package com.cc.test;


import cn.hutool.core.lang.Console;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class TestDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            String next = iterator.next();
            if(next.equalsIgnoreCase("a")){
                iterator.remove();
            }
        }

        for (String key : list) {
            System.out.println(key);
        }
    }
}

 

接下來看看從Java 8 開始的刪除:

1. removeIf方法

        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");

        list.removeIf(s ->s.equals("a"));
        list.forEach(System.out::println);

2.retainAll方法

        List<String> asList = Arrays.asList("a", "c", "b", "e", "g");
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");

        list.retainAll(asList); //使用retain來求交集,從而也可以實現去重的效果
        System.out.println(list);

3. filter方法

strList2 = strList2.stream().filter( s -> !s.equals("a")).collect(Collectors.toList());將指定條件的元素過濾,再生成新的集合

ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");

list = list.stream().filter(s -> !s.equals("a").collect(Collectors.toList()));
        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章