赞
踩
Java 中,有多种方法可以将一个 Set<Integer> 拆分成两个集合。以下是几种常见的方法:
方法 1:使用 Iterator 手动拆分
通过遍历原始集合,将元素按顺序分配到两个新的集合中。
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SplitSetExample {
public static void main(String[] args) {
Set<Integer> originalSet = new HashSet<>();
for (int i = 1; i <= 10; i++) {
originalSet.add(i);
}
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
Iterator<Integer> iterator = originalSet.iterator();
int index = 0;
while (iterator.hasNext()) {
Integer element = iterator.next();
if (index % 2 == 0) {
set1.add(element);
} else {
set2.add(element);
}
index++;
}
System.out.println("Original Set: " + originalSet);
System.out.println("Set 1: " + set1);
System.out.println("Set 2: " + set2);
}
}
方法 2:使用 Stream API
Java 8 引入的 Stream API 可以简化集合的操作。
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class SplitSetExample {
public static void main(String[] args) {
Set<Integer> originalSet = new HashSet<>();
for (int i = 1; i <= 10; i++) {
originalSet.add(i);
}
Set<Integer> set1 = originalSet.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toSet());
Set<Integer> set2 = originalSet.stream()
.filter(n -> n % 2 != 0)
.collect(Collectors.toSet());
System.out.println("Original Set: " + originalSet);
System.out.println("Set 1: " + set1);
System.out.println("Set 2: " + set2);
}
}
方法 3:使用 Apache Commons Collections
使用第三方库 Apache Commons Collections 提供的 CollectionUtils 工具类。
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
import java.util.HashSet;
import java.util.Set;
public class SplitSetExample {
public static void main(String[] args) {
Set<Integer> originalSet = new HashSet<>();
for (int i = 1; i <= 10; i++) {
originalSet.add(i);
}
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
CollectionUtils.forAllDo(originalSet, (Transformer<Integer, Boolean>) n -> {
if (n % 2 == 0) {
set1.add(n);
} else {
set2.add(n);
}
return true;
});
System.out.println("Original Set: " + originalSet);
System.out.println("Set 1: " + set1);
System.out.println("Set 2: " + set2);
}
}
方法 4:使用 Guava 库
Google 的 Guava 库也提供了简便的方法来操作集合。
import com.google.common.collect.Sets;
import java.util.HashSet;
import java.util.Set;
public class SplitSetExample {
public static void main(String[] args) {
Set<Integer> originalSet = new HashSet<>();
for (int i = 1; i <= 10; i++) {
originalSet.add(i);
}
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
Sets.partition(originalSet, originalSet.size() / 2).forEach(part -> {
if (set1.isEmpty()) {
set1.addAll(part);
} else {
set2.addAll(part);
}
});
System.out.println("Original Set: " + originalSet);
System.out.println("Set 1: " + set1);
System.out.println("Set 2: " + set2);
}
}
参考文档:Java 将单个集合(Set<Integer>)拆分成两个集合的几种方法-CJavaPy
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。