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

示例Set<Integer>集合

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

1、使用stream().filter()

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())

2、使用collect()和partitioningBy()

    Map< Boolean, Set<Integer> > map =
        mySet.stream().collect( Collectors.partitioningBy( y -> y % 2 == 0, 
        Collectors.toSet() ) );

        Set<Integer> odds = map.get(Boolean.TRUE);
        Set<Integer> evens = map.get(Boolean.FALSE);

3、使用for循环实现

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