示例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); } }