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

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

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

/**
     * 交集
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> intersect(List<String> list1, List<String> list2) {
        List<String> intersect = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());
        return intersect;
    }

    /**
     * 差集(list1-list2)
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> minus(List<String> list1, List<String> list2) {
        List<String> minus = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
        return minus;
    }

    /**
     * 并集(不去重)
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> unionAll(List<String> list1, List<String> list2) {
        list1.addAll(list2);
        return list1;
    }

    /**
     * 并集(去重)
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> union(List<String> list1, List<String> list2) {
        list1.addAll(list2);
        return list1.stream().distinct().collect(Collectors.toList());
    }

demo代码:

public class TestSetOperation {

    public static void main(String[] args) {
        List<String> list1 = Arrays.asList("a","b","c","d");
        List<String> list2 = Arrays.asList("c","d","e","f");

        //交集
        List<String> intersect = intersect(list1, list2);
        System.out.println("---交集 intersection---");
        intersect.stream().forEach(System.out::println);

        //差集(list1-list2)
        List<String> minus = minus(list1, list2);
        System.out.println("---差集 minus(list1-list2)---");
        minus.stream().forEach(System.out::println);

        //差集(list2-list1)
        //List<String> minus2 = list2.stream().filter(item -> !list1.contains(item)).collect(Collectors.toList());
        List<String> minus2 = minus(list2,list1);
        System.out.println("---差集 minus(list2-list1)---");
        minus2.stream().forEach(System.out::println);

        //并集unionAll
        List<String> list3 = new ArrayList<String>(){{
            add("aa");
            add("bb");
            add("cc");
            add("dd");
        }};
        List<String> list4 = new ArrayList<String>(){{
            add("cc");
            add("dd");
            add("ee");
            add("ff");
        }};
        System.out.println("---并集 不去重---");
        List<String> unionAll = unionAll(list3,list4);
        unionAll.stream().forEachOrdered(System.out::println);

        //并集去重
        List<String> union = union(list3,list4);
        System.out.println("---并集 去重---");
        union.stream().forEachOrdered(System.out::println);
    }


    /**
     * 交集
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> intersect(List<String> list1, List<String> list2) {
        List<String> intersect = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());
        return intersect;
    }

    /**
     * 差集(list1-list2)
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> minus(List<String> list1, List<String> list2) {
        List<String> minus = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
        return minus;
    }

    /**
     * 并集(不去重)
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> unionAll(List<String> list1, List<String> list2) {
        list1.addAll(list2);
        return list1;
    }

    /**
     * 并集(去重)
     * @param list1
     * @param list2
     * @return
     */
    private static List<String> union(List<String> list1, List<String> list2) {
        list1.addAll(list2);
        return list1.stream().distinct().collect(Collectors.toList());
    }
}

输出结果:文章来源地址https://www.toymoban.com/news/detail-550300.html

---交集 intersect---
c
d
---差集 minus(list1-list2)---
a
b
---差集 minus(list2-list1)---
e
f
---并集 不去重---
aa
bb
cc
dd
cc
dd
ee
ff
---并集 去重---
aa
bb
cc
dd
ee
ff

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

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

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

相关文章

  • laravel 两个集合取交集、并集、差集

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

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

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

    2024年02月12日
    浏览(46)
  • python 计算列表的交集,并集,差集

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

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

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

    2023年04月23日
    浏览(44)
  • 【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日
    浏览(42)
  • 两个list对象取合集、差集

    2024年01月17日
    浏览(41)
  • java 获取两个List集合的交集

    可以使用Java中的retainAll方法来获取两个List的交集: 假设有两个List类型的集合list1和list2,代码如下: 下面是获取两个集合的交集的代码: 输出结果为: 其中,retainAll方法会修改intersection集合,使其只包含两个集合的交集。在这个例子中,intersection集合最初是包含list1集合的

    2024年02月11日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包