jdk8 List取交集、并集(不去重)、并集(去重)、补集、差集

这篇具有很好参考价值的文章主要介绍了jdk8 List取交集、并集(不去重)、并集(去重)、补集、差集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class ListUtils {

    /**
     * 获取两个列表的交集。
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @param <T>   列表元素类型
     * @return 交集列表
     */
    public static <T> List<T> getIntersection(List<T> list1, List<T> list2) {
        return list1.stream()
                .filter(list2::contains)
                .collect(Collectors.toList());
    }

    /**
     * 获取两个列表的并集(不去重)。
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @param <T>   列表元素类型
     * @return 并集列表(包含所有元素,包括重复的)
     */
    public static <T> List<T> getUnionAll(List<T> list1, List<T> list2) {
        return Stream.concat(list1.stream(), list2.stream())
                .collect(Collectors.toList());
    }

    /**
     * 获取两个列表的并集(去重)。
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @param <T>   列表元素类型
     * @return 并集列表(去除重复元素)
     */
    public static <T> List<T> getUnionDistinct(List<T> list1, List<T> list2) {
        return Stream.concat(list1.stream(), list2.stream())
                .distinct()
                .collect(Collectors.toList());
    }

    /**
     * 获取两个列表的补集。
     * 补集包含只存在于一个列表中而不在另一个列表中的元素。
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @param <T>   列表元素类型
     * @return 补集列表
     */
    public static <T> List<T> getComplement(List<T> list1, List<T> list2) {
        List<T> complement = new ArrayList<>();
        complement.addAll(list1.stream()
                .filter(e -> !list2.contains(e))
                .collect(Collectors.toList()));
        complement.addAll(list2.stream()
                .filter(e -> !list1.contains(e))
                .collect(Collectors.toList()));
        return complement;
    }

    /**
     * 获取两个列表的差集。
     * 差集包含存在于第一个列表中而不在第二个列表中的元素。
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @param <T>   列表元素类型
     * @return 差集列表
     */
    public static <T> List<T> getDifference(List<T> list1, List<T> list2) {
        return list1.stream()
                .filter(e -> !list2.contains(e))
                .collect(Collectors.toList());
    }
}

方法调用:文章来源地址https://www.toymoban.com/news/detail-567521.html

List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);

List<Integer> intersection = ListUtils.getIntersection(list1, list2);
System.out.println("Intersection: " + intersection);

List<Integer> unionAll = ListUtils.getUnionAll(list1, list2);
System.out.println("Union (All): " + unionAll);

List<Integer> unionDistinct = ListUtils.getUnionDistinct(list1, list2);
System.out.println("Union (Distinct): " + unionDistinct);

List<Integer> complement = ListUtils.getComplement(list1, list2);
System.out.println("Complement: " + complement);

List<Integer> difference = ListUtils.getDifference(list1, list2);
System.out.println("Difference: " + difference);

到了这里,关于jdk8 List取交集、并集(不去重)、并集(去重)、补集、差集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】求两集合的交集、并集、差集

    1、removeAll方法:从list中删除指定集合中包含的所有元素。 2、retainAll方法:从list中删除指定集合中不包含的所有元素。 3、addAll方法:用来向Set集合添加另一个集合对象所包含的所有内容。 参考链接:https://www.cnblogs.com/hxf-zb/p/16102135.html 利用集合的contains方法,来对比第二个

    2024年02月16日
    浏览(40)
  • Java 集合操作之交集、并集和差集

    在 Java 编程中,经常需要对集合进行一些操作,比如取两个集合的交集、并集和差集。本文将介绍如何使用 Java 集合框架中的方法来实现这些集合操作,并通过源码解析来深入了解其实现原理。 先上代码 执行结果 此处各操作会改动原始集合,所以此处的操作都是创建了一个

    2024年02月09日
    浏览(43)
  • php 两个数组取交集、并集、差集

    php 两个数组取交集、并集、差集 交集:array_intersect() 并集:array_merge() 差集:array_diff() laravel 两个集合取交集、并集、差集 交集: 使用intersect()函数,用于获取两个集合的交集: 并集:使用union()函数,用于获取两个集合的并集: 差集:使用diff()函数,用于获取两个集合的

    2024年02月12日
    浏览(47)
  • go 计算map 差集、并集、交集

    原文链接: https://www.zhoubotong.site/post/95.html 某些业务场景可能需要实现两个或者多个map 的交差并集,一下举个简单的demo, 思路其实并不复杂: 输出: 代码中有简单说明,不难看出实现过程其实比较简单。

    2023年04月23日
    浏览(45)
  • python 计算列表的交集,并集,差集

    如果是列表的话,先将列表转为集合,使用集合去操作,返回的结果也为集合 比如两个列表: 1. 并集,就是a和b的所有元素 2. 差集,b有,a没有的元素 3. 交集,ab共有的元素 4. 对称差集,a和b所有不属于set(b) set(a)的集合

    2024年02月15日
    浏览(58)
  • laravel 两个集合取交集、并集、差集

    交集: 使用intersect()函数,用于获取两个集合的交集: 并集:使用union()函数,用于获取两个集合的并集: 差集:使用diff()函数,用于获取两个集合的差集:

    2024年02月12日
    浏览(72)
  • jdk8对象列表使用stream流基于某个字段(或某些条件)实现去重

    直接上代码:(实现了去重加排序的效果) comparing(比较器)定义的就是去重的所使用的字段,可以使用匿名内部类来写更复杂的去重逻辑。 我们看看单参数的比较器方法实现;如下,可以发现内部实际调用效果类似于(a,b)-a.getXXX.conpareTo(b.getXXX)。 因为Function.apply(field)实际上

    2024年02月11日
    浏览(48)
  • Java 中 List 集合取补集

    交集 Intersection 英 [ˌɪntəˈsekʃn] 并集 Union 英 [ˈjuːniən] 差集 difference of set 补集 complement set 英 [ˈkɒmplɪment] Further Reading : Java 中 List 集合取交集 Further Reading : Java 中 List 集合取并集 Further Reading : Java 中 List 集合取差集 Further Reading : Java 中 List 集合取补集 参考: java 集合

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包