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