【发布时间】:2018-07-16 19:46:31
【问题描述】:
我有一组数字:
Set<Integer> mySet = [ 1,2,3,4,5,6,7,8,9]
我想把它分成两组赔率和偶数。
我的方法是使用两次过滤器:
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())
我不喜欢这个解决方案,因为我把整个系列都检查了两次。
有什么更聪明的方法吗?
【问题讨论】:
-
只需迭代元素,检查它们是偶数还是奇数,然后将它们添加到适当的集合中。一次迭代。
-
您不想使用经典的 for 循环和 if/else 语句吗?做你的要求很容易......
-
也许使用 .map 而不是 .filter
-
在拆分之前对列表进行排序...并查看性能...这样说是因为您已经接受了答案...也试试这个
-
@Pras 性能会更差。排序将元素个数为 O(n) 的算法变成 O(n log n)。
标签: java filter java-8 java-stream data-partitioning