V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
codeismylife
V2EX  ›  问与答

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

  •  
  •   codeismylife · 2019-07-03 14:24:42 +08:00 · 4837 次点击
    这是一个创建于 1749 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如{0,1,2,3,4,5,6,7,8,9}这个集合,条件是 是否大于 6,分割成两个集合然后放在 map 里。例如:Map<Boolean,List<Integer>>,true 的就是大于 6 的,false 的就是小于 6 的。我会用两次 filter 来实现,但是不知道怎么用一行 lambda 来实现。请教各位,不胜感激。
    8 条回复    2019-07-05 03:57:20 +08:00
    Kyle18Tang
        1
    Kyle18Tang  
       2019-07-03 14:26:27 +08:00 via Android
    groupby
    codeismylife
        2
    codeismylife  
    OP
       2019-07-03 15:00:32 +08:00
    @Kyle18Tang groupby 能按照条件分组吗?具体怎么写呢?
    npe
        3
    npe  
       2019-07-03 15:01:31 +08:00
    filter 就可以了,groupBy 只是分组
    codeismylife
        4
    codeismylife  
    OP
       2019-07-03 15:06:21 +08:00
    @npe 可是 filter 只能筛出一部分来,我想用一行 lambda 代码返回一个这样的 Map<Boolean,List<Integer>>。能请教一下如何写吗?
    terry0314
        5
    terry0314  
       2019-07-03 15:09:48 +08:00   ❤️ 2
    list.stream().collect(Collectors.groupingBy(n -> n > 6, Collectors.toList()))
    codeismylife
        6
    codeismylife  
    OP
       2019-07-03 15:19:41 +08:00
    @terry0314 你这个可以。谢谢。
    Kyle18Tang
        7
    Kyle18Tang  
       2019-07-03 15:21:13 +08:00
    @codeismylife #2 5 楼正解。
    linuxsteam
        8
    linuxsteam  
       2019-07-05 03:57:20 +08:00 via Android
    @codeismylife 这个会返回 true flase 吗 不是还需要手动放到 map ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1000 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:16 · PVG 06:16 · LAX 15:16 · JFK 18:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.