java - 如何在 java 流中添加我的方法?
问题描述
我有一个输出集合的流:
1=[15.01.2021, 30.09.2012]
2=[12.05.2021, 02.01.2021]
3=[14.02.2021]
4=[11.05.2022]
private static void groupDateById (Collection <Logs> firstFileLog, Collection <Logs> second) {
Stream.of (firstFileLog, second)
.flatMap (Collection::stream)
.collect(Collectors.groupingBy(Logs::getId, Collectors.mapping(Logs::getTime,Collectors.toList())))
.entrySet().forEach(System.out::println);
}
我还有一种方法可以检查日期之间的差异。在第一和第二之间。
// Displays the difference. In this case, one month.
GFG.findDifference("2020-09-12", "2020-10-12");
是否可以将这种计算日期差异的方法添加到流中?立即计算所有日期。
我需要得到这个输出
1=[15.01.2021, 30.09.2012], difference(second date - first) 99 month
2=[12.05.2021, 02.01.2021], difference(second date - first)..
3=[14.02.2021] - ignore
4=[11.05.2022] - ignore
解决方案
您可以替换forEach
流中的 以执行所需的操作:(假设静态导入Collectors
Stream.of(firstFileLog, second)
.flatMap (Collection::stream)
.collect(groupingBy(Logs::getId, mapping(Logs::getTime, toList())))
.entrySet()
.forEach(entry -> {
System.out.print(entry);
List<Time> time = entry.getValue();
if(time.size()==2) {
System.out.print(findDifference(time.get(0), time.get(1)));
}
System.out.println();
};
);
推荐阅读
- android - Android onRestoreInstanceState - 如何在屏幕方向更改后恢复对象?
- javascript - Mongoose 模型不保存,不抛出错误
- laravel - 身份验证中间件重新路由到错误的登录页面 auth.signin
- node.js - 将 JS 库导入 Angular 7
- mysql - SQL 中的表操作
- c# - 匹配 FOO 连字符和数字的复杂正则表达式
- python-3.x - pyautogui截图功能中的区域参数
- python - 为什么我使用 Buildozer 时总是出错
- c++ - 如何避免初始化列表中的代码重复
- python - DASK 工作时间不同的工人