You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ArrayList中移除与另一列表不匹配的元素?

移除列表中不匹配元素(保留交集)

没问题,我来帮你搞定这个需求——你要做的其实就是保留两个列表的交集,只留下同时存在于两个列表中的元素,移除仅在单个列表出现的项。下面给你几种实用的实现方式:

方法1:循环遍历判断

最直观的思路就是逐个检查原始列表的元素,把存在于另一个列表中的元素保留下来:

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

public class ListIntersection {
    public static void main(String[] args) {
        List<Integer> original = Arrays.asList(1, 2, 3);
        List<Integer> dummy = Arrays.asList(2, 3);
        List<Integer> result = new ArrayList<>();

        for (Integer num : original) {
            if (dummy.contains(num)) {
                result.add(num);
            }
        }

        // 输出结果:[2, 3]
        System.out.println(result);
    }
}

方法2:使用List的retainAll方法

Java的List自带了retainAll()方法,它会直接修改原列表,只保留与指定集合的交集元素:

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

public class ListIntersection {
    public static void main(String[] args) {
        // 注意要将original初始化为ArrayList,避免Arrays.asList返回的固定大小列表报错
        List<Integer> original = new ArrayList<>(Arrays.asList(1, 2, 3));
        List<Integer> dummy = Arrays.asList(2, 3);

        original.retainAll(dummy);

        // 输出结果:[2, 3]
        System.out.println(original);
    }
}

提示:Arrays.asList()返回的是一个固定大小的列表,直接调用retainAll()会抛出UnsupportedOperationException,所以需要把它转换成ArrayList再操作。

方法3:Java 8+ Stream API实现

如果你的项目用的是Java 8及以上版本,用Stream来处理会更简洁优雅:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ListIntersection {
    public static void main(String[] args) {
        List<Integer> original = Arrays.asList(1, 2, 3);
        List<Integer> dummy = Arrays.asList(2, 3);

        List<Integer> result = original.stream()
                                       .filter(dummy::contains)
                                       .collect(Collectors.toList());

        // 输出结果:[2, 3]
        System.out.println(result);
    }
}

内容的提问来源于stack exchange,提问作者user9130953

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:24