codeismylife
V2EX  ›  问与答

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

  •  
  •   codeismylife · Jul 3, 2019 · 5370 views
    This topic created in 2512 days ago, the information mentioned may be changed or developed.
    例如{0,1,2,3,4,5,6,7,8,9}这个集合,条件是 是否大于 6,分割成两个集合然后放在 map 里。例如:Map<Boolean,List<Integer>>,true 的就是大于 6 的,false 的就是小于 6 的。我会用两次 filter 来实现,但是不知道怎么用一行 lambda 来实现。请教各位,不胜感激。
    8 replies    2019-07-05 03:57:20 +08:00
    Kyle18Tang
        1
    Kyle18Tang  
       Jul 3, 2019 via Android
    groupby
    codeismylife
        2
    codeismylife  
    OP
       Jul 3, 2019
    @Kyle18Tang groupby 能按照条件分组吗?具体怎么写呢?
    npe
        3
    npe  
       Jul 3, 2019
    filter 就可以了,groupBy 只是分组
    codeismylife
        4
    codeismylife  
    OP
       Jul 3, 2019
    @npe 可是 filter 只能筛出一部分来,我想用一行 lambda 代码返回一个这样的 Map<Boolean,List<Integer>>。能请教一下如何写吗?
    terry0314
        5
    terry0314  
       Jul 3, 2019   ❤️ 2
    list.stream().collect(Collectors.groupingBy(n -> n > 6, Collectors.toList()))
    codeismylife
        6
    codeismylife  
    OP
       Jul 3, 2019
    @terry0314 你这个可以。谢谢。
    Kyle18Tang
        7
    Kyle18Tang  
       Jul 3, 2019
    @codeismylife #2 5 楼正解。
    linuxsteam
        8
    linuxsteam  
       Jul 5, 2019 via Android
    @codeismylife 这个会返回 true flase 吗 不是还需要手动放到 map ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1023 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 22:30 · PVG 06:30 · LAX 15:30 · JFK 18:30
    ♥ Do have faith in what you're doing.