Java 中,有多种方法可以将一个 Set<Integer> 拆分成两个集合。本文主要介绍Java中,将单个集合(Set<Integer>)通过指定条件拆分成两个集合的几种方法。

示例Set<Integer>集合

Set<Integer> mySet = [ 1,2,3,4,5,6,7,8,9]

1、使用stream().filter()

import java.util.Set;
import java.util.HashSet;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
  public static void main(String[] args) {
    
        // 创建并填充原始集合
        Set<Integer> mySet = new HashSet<>();
        for (int i = 1; i <= 10; i++) {
            mySet.add(i);
        }

    Set<Integer> set1 = mySet.stream().filter(y -> y % 2 == 0).collect    (Collectors.toSet());
    Set<Integer> set2 =mySet.stream().filter(y -> y % 2 != 0).collect    (Collectors.toSet());
      System.out.println(set1);
      System.out.println(set2);
  }
}

2、使用collect()和partitioningBy()

import java.util.Set;
import java.util.HashSet;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 创建并填充原始集合
        Set<Integer> mySet = new HashSet<>();
        for (int i = 1; i <= 10; i++) {
            mySet.add(i);
        }

        // 打印原始集合
        System.out.println("Original Set: " + mySet);

        // 使用 Stream API 和 Collectors.partitioningBy 方法拆分集合
        Map<Boolean, Set<Integer>> map = mySet.stream()
                .collect(Collectors.partitioningBy(y -> y % 2 == 0, Collectors.toSet()));

        // 获取奇数集合和偶数集合
        Set<Integer> evens = map.get(Boolean.TRUE);
        Set<Integer> odds = map.get(Boolean.FALSE);

        // 打印拆分后的集合
        System.out.println("Even Set: " + evens);
        System.out.println("Odd Set: " + odds);
    }
}

3、使用for循环实现

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Main {
  public static void main(String[] args) {
    
        // 创建并填充原始集合
        Set<Integer> mySet = new HashSet<>();
        for (int i = 1; i <= 10; i++) {
            mySet.add(i);
        }
      Set<Integer> setEven = new HashSet<>();
      Set<Integer> setOdd = new HashSet<>();
      
      for (Integer val : mySet) {
          if (val % 2 == 0)
              setEven.add(val);
          else
              setOdd.add(val);
      }
      //或者
      for(Integer val : mySet) {
          ((val % 2 == 0) ? setEven : setOdd).add(val);
      }
      System.out.println(setEven);
      System.out.println(setOdd);
  }
}

推荐文档