初学 Java 的 lambda,求教怎么把一个 list 按照条件分割成两个 list。

2019-07-03 14:24:42 +08:00
 codeismylife
例如{0,1,2,3,4,5,6,7,8,9}这个集合,条件是 是否大于 6,分割成两个集合然后放在 map 里。例如:Map<Boolean,List<Integer>>,true 的就是大于 6 的,false 的就是小于 6 的。我会用两次 filter 来实现,但是不知道怎么用一行 lambda 来实现。请教各位,不胜感激。
4844 次点击
所在节点    问与答
8 条回复
Kyle18Tang
2019-07-03 14:26:27 +08:00
groupby
codeismylife
2019-07-03 15:00:32 +08:00
@Kyle18Tang groupby 能按照条件分组吗?具体怎么写呢?
npe
2019-07-03 15:01:31 +08:00
filter 就可以了,groupBy 只是分组
codeismylife
2019-07-03 15:06:21 +08:00
@npe 可是 filter 只能筛出一部分来,我想用一行 lambda 代码返回一个这样的 Map<Boolean,List<Integer>>。能请教一下如何写吗?
terry0314
2019-07-03 15:09:48 +08:00
list.stream().collect(Collectors.groupingBy(n -> n > 6, Collectors.toList()))
codeismylife
2019-07-03 15:19:41 +08:00
@terry0314 你这个可以。谢谢。
Kyle18Tang
2019-07-03 15:21:13 +08:00
@codeismylife #2 5 楼正解。
linuxsteam
2019-07-05 03:57:20 +08:00
@codeismylife 这个会返回 true flase 吗 不是还需要手动放到 map ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/579647

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX