【源码运行】Java实现集和操作(交集、并集及差集),完整代码可复现,多种方法实现

▚ 01 交集 intersection


  • 两者方式实现:
  • retainAll()方法 (会破坏原有的集和变量)。
  • stream方法 (产生新的集和变量,但不会破坏原有集和变量)。

  • 求交集的示例源码:
import java.io.IOException;
import java.util.stream.Collectors;
import java.util.Set;
import java.util.HashSet;

//交集 intersection
public class set_intersection {
    public static void main(String[] args) throws IOException {

        Set<Integer> set1 = new HashSet<>(); 
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);
        set1.add(5);
        set1.add(6);

		Set<Integer> set2 = new HashSet<>();
        set2.add(0);
        set2.add(2);
        set2.add(3);
        set2.add(6);

        System.out.println("set1: " + set1);
        System.out.println("set2: " + set2);
        
        //stream方法
        Set<Integer> res = set1.stream().filter(e -> set2.contains(e)).collect(Collectors.toSet());
        System.out.println("After intersection [stream]: " + res);
    
        //retainAll方法
        set1.retainAll(set2);
        System.out.println("After intersection: [retainAll]" + set1);
    }
}
  • 输出:
set1: [1, 2, 3, 4, 5, 6]
set2: [0, 2, 3, 6]
After intersection [stream]: [2, 3, 6]
After intersection [retainAll]: [2, 3, 6]

在这里插入图片描述


▚ 02 并集union


  • 求并集的示例源码:
import java.io.IOException;
import java.util.Set;
import java.util.HashSet;

//并集 union
public class set_union {
    public static void main(String[] args) throws IOException {

        Set<Integer> set1 = new HashSet<>();     
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);
        set1.add(5);
        set1.add(6);

		Set<Integer> set2 = new HashSet<>();
        set2.add(0);
        set2.add(2);
        set2.add(3);
        set2.add(6);

        System.out.println("set1: " + set1);
        System.out.println("set2: " + set2);
        
        //addAll
        set1.addAll(set2);
        System.out.println("After intersection: " + set1);
    }
}
  • 输出:
set1: [1, 2, 3, 4, 5, 6]
set2: [0, 2, 3, 6]
After intersection: [0, 1, 2, 3, 4, 5, 6]

在这里插入图片描述


▚ 03 差集difference


  • 两者方式实现:
  • removeAll()方法 (会破坏原有的集和变量)。
  • stream方法 (产生新的集和变量,但不会破坏原有集和变量)。

  • 求差集的示例源码:
import java.io.IOException;
import java.util.stream.Collectors;
import java.util.Set;
import java.util.HashSet;

//差集 difference
public class set_difference {
    public static void main(String[] args) throws IOException {

        Set<Integer> set1 = new HashSet<>();
        set1.add(1);
        set1.add(2);
        set1.add(3);
        set1.add(4);
        set1.add(5);
        set1.add(6);

        Set<Integer> set2 = new HashSet<>();
        set2.add(0);
        set2.add(2);
        set2.add(3);
        set2.add(6);

        System.out.println("set1: " + set1);
        System.out.println("set2: " + set2);
    
        //stream方法
        Set<Integer> res = set1.stream().filter(e -> !set2.contains(e)).collect(Collectors.toSet());
        System.out.println("After difference [stream]: " + res);

        //removeAll方法
        set1.removeAll(set2);
        System.out.println("After difference [removeAll]: " + set1);
    }
}
  • 输出:
set1: [1, 2, 3, 4, 5, 6]
set2: [0, 2, 3, 6]
After difference [stream]: [1, 4, 5]
After difference [removeAll]: [1, 4, 5]





在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值