Java元素删除结合的方法集合

馋奶兔 提交于 2020-11-13 00:56:48

首先要看你的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()));
        

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!