Java8时间段分组
根据统计的时间段进行分组,例如当天的时间段0点到6点、6点到12点,12点到18点的统计数量,这时候繁杂的for循环会导致代码量激增,切不够明了。我们可以用Java8的链式方式来进行分组
hour:带表要隔的时间
时间最好用LocalDateTime
根据小时
LocalTime.MAX//获取当前时间的结束
LocalTime.MIN//获取当前时间的开始
map = list.stream().collect(Collectors.groupingBy(o-> o.getAlarmTime().getHour()/hour));
根据分钟
1 | map = list.stream().collect(Collectors.groupingBy(o-> o.getAlarmTime().getMinute()()/10)); |
按周统计
1 2 3 4 5 6 7 | LocalDate date = ...; // WeekFields.ISO = 一星期从周一开始算, 其它的请自己摸索. WeekFields weekFields = WeekFields.ISO; int weekNumber = date. get (weekFields.weekOfWeekBasedYear()); map = list.stream().collect(Collectors.groupingBy(o-> o.getAlarmTime(). get (weekFields.weekOfMonth()) )); 或者 map = list.stream().collect(Collectors.groupingBy(o-> o.getAlarmTime(). get (weekFields.weekOfWeekBasedYear()) )); |
除了weekOfWeekBasedYear,还有一个weekOfYear,它们两个的具体区别为:
如果一周涉及到了跨年,如2021.12.31是周五,2022.01.01是周六,这涉及到了年份的变化。
weekOfWeekBasedYear会把2021.12.31、2022.01.01(新年第一天)看做是2021年的最后一周,即看做同一周;
weekOfYear则会把2021.12.31看做是2021年的最后一周,把2022.01.01看最是2022年的第一周,即当做两周。
每天学习一点点,你就进步一点点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现