[英]How can i turn on "Stream.of" method in intellij IDEA for Java
[英]How can I add my method inside java stream?
我有一個輸出一組的流:
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();
};
);
看起來你有一個xyproblem 。 目前尚不清楚,至少對我而言,您要實現的目標是什么。 您可能想退后一步,問問自己任務是什么,並提供更多背景信息,以便更好地幫助您解決問題。
如果您只想將一些輸出打印到控制台,您可以這樣做(假設findDifference
方法返回一個字符串):
Stream.of(firstFileLog, second)
.flatMap (Collection::stream)
.collect(Collectors.groupingBy(Logs::getId,
Collectors.mapping(Logs::getTime,Collectors.toList())))
.forEach((id,list) -> {
System.out.println(id + "="
+ list
+ (list.size() <2 ? " - ignore": ", diff: "+ findDifference(list.get(0), list.get(1))));
});
如果您需要數據進行進一步處理,可能還有其他更適合您要求的方法。 但是很難通過猜測來判斷,因此您可能希望包含具有相關類和方法的最小可重現示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.