java - 如何使用java流从包含多个不同mysql日期的列表对象中获取地图对象
问题描述
如何使用 java 8 流从包含多个不同 MySQL 日期的列表对象中获取包含 Key 作为字符串和 Value 作为 List 对象的映射对象。
例子:
List listObj = new ArrayList<>();
listObj.add("2018-04-21");
listObj.add("2018-05-20");
listObj.add("2018-04-22");
listObj.add("2018-03-29");
listObj.add("2018-03-10");
预期的 Map 对象应该是这样的:
如果我正在打印地图对象输出:
[March, "2018-03-29","2018-03-10"] [April, "2018-04-21","2018-04-22"] [May, "2018-05-20"]
解决方案
您可以按月解析日期和分组:
List<String> listObj = new ArrayList<>(); //use String type argument
// ... add elements
Map<Month, List<LocalDate>> map = listObj.stream()
.map(LocalDate::parse)
.collect(Collectors.groupingBy(LocalDate::getMonth));
打印map
输出:
{MAY=[2018-05-20], MARCH=[2018-03-29, 2018-03-10], APRIL=[2018-04-21, 2018-04-22]}
如果您更需要 a Map<String, List<String>>
,那么您可以将最后一行更改为
...collect(Collectors.groupingBy(date -> date.getMonth().toString(),
Collectors.mapping(LocalDate::toString, Collectors.toList())));
推荐阅读
- matlab - 如何在不使用网格函数的情况下在 MATLAB 中为半球生成代码
- java - 为什么我的数组比较排序不起作用?
- python - 如何枚举组合过滤重复
- python - Python:使脚本运行指定的时间
- linker - stm32cube ide,构建错误说找不到指定的链接器脚本
- amazon-web-services - AWS Kinesis 数据分区
- highcharts - HighCharts windbarb 动态添加点
- docker - 如何将卷附加到在 Mac 上运行 Ubuntu 的 Docker 容器?
- python - 想知道如何在 Conda 包管理器中管理包
- scikit-learn - 将 LightGBM 与 MultiOutput Regressor 和 eval 集一起使用