当前位置:   article > 正文

Java 将单个集合(Set<Integer>)拆分成两个集合的几种方法_java set 分割

java set 分割

 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/1012876
推荐阅读
相关标签
  

闽ICP备14008679号