java中集合求并集、差集以及交集方法你知道多少?

服务端开发中,经常做的处理就是数据组装,而数据组装中集合处理算是"出镜率"最高的,今天就来简单聊一下集合中求并集、差集以及交集方法。

实际开发中常用处理方式就是集合自带的api与jdk8中stream流.下面以案例的形式简单说下使用以及区别.

public static void main(String[] args) {
  
    ArrayList integers = new ArrayList<>();
    integers.add(1);
    integers.add(2);
    integers.add(3);
  
    ArrayList integers1 = new ArrayList<>();
    integers1.add(1);
    integers1.add(2);
  
    // 取交集
    method1(integers, integers1);
  
    // 取差集
    method2(integers, integers1);
  
    // 取并集
    method3(integers, integers1);
}
  • 求交集
private static void method1(ArrayList integers, ArrayList integers1) {
  
    // retainAll方法求交集
    integers.retainAll(integers1); // 1,2
    System.out.println(integers); // 1,2
    System.out.println(integers1); // 1,2
  
    // stream方式求交集
    List collect = integers.stream().filter(s -> integers1.contains(s)).collect(Collectors.toList());
    System.out.println(collect); // 1,2
  
}
  • 求差集
private static void method2(ArrayList integers, ArrayList integers1) {
    
  	// removeAll方法求差集
      integers.removeAll(integers1);
      System.out.println(integers); // 3
      System.out.println(integers1); // 1 2

      // stream方式求差集
      List collect = integers.stream().filter(s -> !integers1.contains(s)).collect(Collectors.toList());
      System.out.println(collect); // 3
  }


  • 求并集
private static void method3(ArrayList integers, ArrayList integers1) {
   
   integers.addAll(integers1);
    System.out.println(integers); // 1 2 3 1 2
    System.out.println(integers1); // 1 2
  
    integers1.addAll(integers);
    System.out.println(integers1); // 1 2 3 1 2
    System.out.println(integers); // 1 2
  
}

好下面总结一下区别:retainAll或是removeAll的方式会将求交(差)集之后的元素都赋值给集合,也就是说原集合元素是被破坏的,并且需要注意两个集合之前的调用顺序,如果调用位置不同返回的结果也是不一样的;jdk8的stream流求交集的方式就能保证原集合的数据完整性!

—— END ——

作者| 卖柴火的小男孩啊

多年后端开发经验,坚持分享更多java干货内容!

如果你喜欢我的文章,不妨点赞、转发、收藏一下哦!

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章