当前位置: 首页 > 知识库问答 >
问题:

使用流的返工方法[重复]

田德馨
2023-03-14

我写了这个方法来计算数据使用次数。它接收带有数据的LinkedList(历史日期),然后我把它添加到Set中,以避免重复,并在Map中计算键值(数据计数)

 public Map<String, Integer> countCodingsByDate() {
    Set<String> dateCount = new HashSet<>(codingHistory.historyDate);
         Map<String, Integer> dateOccurence = new HashMap<>();
         for (String s : dateCount) {
             int count = 0;
             for (String a : codingHistory.historyDate) {
                 if (s.equals(a)) {
                     count++;
                 }
             }
             dateOccurence.put(s, count);
         }
         return dateOccurence;
     }

输出:

{28-11-2019=5, 29-11-2019=3}

我有一个问题——用什么方式以及如何用流重做它?谢谢你的回答

共有3个答案

白和泽
2023-03-14

我建议使用收集器。groupingBy适用于像您这样的用例。

Map<String, Long> groupedByDate = codingHistory.historyDate.stream()
   .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
包谭三
2023-03-14

就这么做吧

Map<String, Integer> result = codingHistory.historyDate.stream()
        .collect(Collectors.toMap(date -> date, date -> 1, Integer::sum));
茅慈
2023-03-14

如果你能使用地图

public Map<String, Long> countCodingsByDate() {
    return codingHistory.historyDate.stream()
        .collect(Collectors.groupingBy(
            Function.identity(),
            Collectors.counting()
        ));
}

注意:这是找出集合发生的正常方法。类似的问题,请参见: 1,2

 类似资料:
  • 我在应用程序中使用Activiti框架。Activiti通过Activiti API进行管理。 真是个问题: 我需要重新启动服务器wtih应用程序。这意味着两件事: 我需要正确暂停/停止所有活动 目前,我的应用程序已通过系统停止。退出(0) 问题: 我怎么会那样做呢?(意指以上两项) System.exit(0)会遇到什么问题? 编辑: 是的,谢谢。但我使用嵌入式Activiti。这些适用于嵌入式

  • 返回 Stream 的方法是否有命名约定?我发现的唯一提及是在S.O(最后一段)上的答案,但我不明白它基于什么。

  • 下面的代码生成一个 空指针异常 由于此人在本例中没有任何,因此我想将返回到 尝试添加仍然会产生相同的错误。 这应该如何处理?如果条件,有没有办法处理同一行代码而不是再检查一行?

  • 我有一个流应用程序,具有以下驱动程序代码,用于实时消息转换。 执行几分钟后,应用会引发以下异常,然后不会在流中前进。 我试图清除目录并重新启动应用程序,但再次抛出相同的异常。我注意到的一件事是,该应用程序在转换所有积压消息之前工作正常,但在处理一些新消息后引发异常! 有时它也会抛出下面未被捕获的异常。 引发这些异常(其中一个)后,应用仍在运行,但未在流中前进。 处理这些错误的正确方法是什么?。是否