如何在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
yychuan123456 回答:如何在java流中添加我的方法?

您可以替换流中的 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))));
        });

如果您需要数据进行进一步处理,可能还有其他更适合您要求的方法。但是仅凭猜测很难判断,因此您可能希望将 minimal-reproducible-example 与相关类和方法一起包含

本文链接:https://www.f2er.com/10856.html

大家都在问