【发布时间】:2021-05-06 15:00:56
【问题描述】:
我正在从数据库中获取数据并制作如下地图:
List<MyBO> data = callDatabase();
//here I am grouping the channels by run date
Map<String, List<String>> groupDatesByChannel = data .parallelStream().collect(
Collectors.groupingBy(MyBO::getChannelName,
Collectors.mapping(MyBO::getRunDate, Collectors.toList())));
现在的问题是,对于其中一个通道,运行日期是每小时一次,即通道上的批处理每小时运行一次,因此从数据库中获取的特定源的运行日期采用 yyyyMMddHH 的形式,而不是 yyyyMMdd。
我的代码适用于运行日期为 yyyMMdd 格式的频道,我上面的地图示例 (groupDatesByChannel) 如下所示:
Channel_2[20200101 , 20200103 , 20200107],
Channel_5[20200103 ]
Channel_7[20200102 , 20200104 ]
我想为每小时运行日期的频道制作此映射。
Channel_1[**2020010100,2020010101...2020010123,20200101**, 20200102, 20200104 ],
Channel_2[20200101 , 20200103 , 20200107],
Channel_5[20200103 ]
Channel_7[20200102 , 20200104 ]
到
Channel_1[**20200101**, 20200102, 20200104 ],
Channel_2[20200101 , 20200103 , 20200107],
Channel_5[20200103 ]
Channel_7[20200102 , 20200104 ]
即我想合并所有相同的日期,无论是 yyyyMMddHH 还是 yyyyMMdd fromat。
【问题讨论】:
-
我不确定您要的是什么,但您是否“简单地”采用某种转换方法来接受
MyBO::getChannelName发出的任何内容......并将其转换为首选格式?
标签: java java-8 functional-programming