V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Yohann97
V2EX  ›  Java

想使用 java8 的 stream,将数据按照时间段进行分组,数据请看图片

  •  
  •   Yohann97 · 2019-02-19 21:15:29 +08:00 · 3652 次点击
    这是一个创建于 2109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://i.loli.net/2019/02/19/5c6c005354ef4.jpg

    业务是如果查询最近七天的注册用户,我要将数据安装最近的七个自然日分组,我只会写这样的 list.stream().collect(Collectors.groupingBy(Apple::getId)),还请各位大佬帮忙看下如何处理

    5 条回复    2019-02-20 10:58:08 +08:00
    TigerWoods
        1
    TigerWoods  
       2019-02-19 21:57:02 +08:00 via Android
    grohoBy 的参数是一个 Function,你自己写一个 lambda 实现,入参 apple 出参为年月日的字符串。
    vHypnos
        2
    vHypnos  
       2019-02-20 03:27:45 +08:00
    先不关注技术问题,你把真实电话号码贴在这里真的好吗。
    vHypnos
        3
    vHypnos  
       2019-02-20 03:35:41 +08:00   ❤️ 2
    Map<LocalDate, List<Item>> result = list.stream().collect(Collectors.groupingBy(item -> item.getCreateTime().with(TemporalAdjusters.previousOrSame(DayOfWeek.of(1)))));
    Yohann97
        4
    Yohann97  
    OP
       2019-02-20 09:34:33 +08:00
    @vHypnos 哈哈,测试数据,没事的。下次会注意的
    tamer
        5
    tamer  
       2019-02-20 10:58:08 +08:00
    ```
    Map<DayOfWeek, List<LocalDate>> collect = lis.stream().collect(Collectors.groupingBy(item -> DayOfWeek.from(item.getCreateTime())));
    ```
    参考#3 感恩 又学习到了新姿势 @vHypnos
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5555 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:37 · PVG 16:37 · LAX 00:37 · JFK 03:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.