当前位置: 首页 > 面试题库 >

被Java8 Collectors.toMap混淆

季华茂
2023-03-14
问题内容

我有一个如下所示的集合,我想过滤掉除月末以外的所有内容。

2010-01-01=2100.00, 
2010-01-31=2108.74, 
2010-02-01=2208.74, 
2010-02-28=2217.92, 
2010-03-01=2317.92, 
2010-03-31=2327.57, 
2010-04-01=2427.57, 
2010-04-30=2437.67, 
2010-05-01=2537.67, 
2010-05-31=2548.22, 
2010-06-01=2648.22, 
2010-06-30=2659.24, 
2010-07-01=2759.24, 
2010-07-31=2770.72, 
2010-08-01=2870.72, 
2010-08-31=2882.66, 
2010-09-01=2982.66, 
2010-09-30=2995.07, 
2010-10-01=3095.07, 
2010-10-31=3107.94, 
2010-11-01=3207.94, 
2010-11-30=3221.29

我有以下过滤条件。frequency.getEnd返回LocalDate给定月份的匹配项LocalDate

.filter(p -> frequency.getEnd(p.getKey()) == p.getKey())

所以现在我想我必须将此过滤后的流转换回地图。我想我使用收集器来做到这一点。因此,我添加

.collect(Collectors.toMap(/* HUH? */));

但是我不知道该怎么办Collectors.toMap。阅读示例会让我感到困惑。这是我当前的代码,显然不起作用。

TreeMap<LocalDate, BigDecimal> values = values.entrySet()
                                              .stream()
                                              .filter(p -> frequency.getEnd(p.getKey()) == p.getKey())
                                              .collect(Collectors.toMap(/* HUH? */));

问题答案:

除了前面的答案外,请注意,如果您不需要保留原始地图,则可以在不使用Stream API的情况下就地执行此类过滤:

values.keySet().removeIf(k -> !frequency.getEnd(k).equals(k));


 类似资料:
  • 我有一个如下所示的集合,我想过滤掉除了不是月末的日期之外的所有内容。 我有以下筛选条件<代码>频率。getEnd返回与给定月底匹配的

  • 问题内容: 我对从方法中看到的一些简单行为感到困惑。 我有一个名为的文件,看起来像这样: 我写了这个脚本: my.js 脚本输出: 我想增强脚本,使其充满而不是空着。 当我使用逐步浏览脚本时,似乎正在填充,但我认为这是一种幻想。 另外,当我运行 时, 在读取之前运行。 因此,我可能需要在这里了解一些异步机制。 对于那些了解得很好的人,以下问题可能很容易。 但是,我很乐意得到这个问题的答案: 如何增

  • 我已经阅读了几篇关于proguard混淆的stackoverflow帖子 如何在使用ProGuard时保留/排除特定的包路径? 如何让Proguard忽略外部库? 如何在使用proguard进行混淆时从injar中排除特定的jar? 但我没有找到答案来排除一个特定的目录,以防止混淆。

  • 问题内容: 模式和打开文件进行更新(请注意,会截断文件)。在区分二进制文件和文本文件的系统上,将“ b”追加到以二进制模式打开文件的模式;在没有此区别的系统上,添加“ b”无效。 与此 :打开一个文件进行读写。如果文件存在,则覆盖现有文件。如果该文件不存在,请创建一个新文件以进行读写。 但是,如何读取打开的文件? 问题答案: 假设你要打开的文件带有应有的声明。然后,你将执行以下操作以从文件中读取内

  • im正在开发一个具有两个JPanel的应用程序。第一个 JPanel 用作绘图板,第二个用作属性/设置面板。因此,绘图板应使用主动渲染,第二个应使用被动渲染。它们都已添加到 JFrame 中。 我一直在阅读java中的主动渲染,但我注意到JPanel不支持createBufferStrategy。这是否意味着我需要使用画布?画布的问题是它不是一个容器,所以我不能向它添加组件。我也可以使用JFram

  • 我在尝试运行时收到此错误: 13:27:47.442[错误]GenServer#PID