问题标签 [collectors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
18314 浏览

java - partitioningBy的目的是什么

例如,如果我打算对一些元素进行分区,我可以执行以下操作:

输出:

但对我partioningBy来说只是groupingBy. 尽管前者接受 aPredicate作为参数,而后者接受 a Function,但我只是将分区视为正​​常的分组函数。

所以同样的代码做同样的事情:

这也导致Map<Boolean, List<String>>.

那么有什么理由我应该使用partioningBy而不是groupingBy?谢谢

0 投票
1 回答
581 浏览

java - 从 Java 8 流中删除与模式匹配的序列

我正在发现 Java 8,尤其是Stream的使用,它看起来非常强大。不过,我在表达查询时遇到了问题。

我有一个要分析的事件对象列表。我想在这个列表中找出一些不好的模式(事件序列),应该删除。

基本上,一个事件对象有 3 个字段:

  • Element eventSource(Element 超类的对象,例如 VirtualMachine),
  • String eventName(事件类的类型,例如“VMHighCpu”或“VMLowCpu”),
  • 字符串 eventMetric(涉及的指标,例如“cpu”)。

如果我有 2 个与相同源和相同指标相关的事件,但它们是相反的(例如,一个是“VMHighCpu”类型,另一个是“VMLowCpu”类型),我想从我的列表中删除这两个事件。

我尝试了几件事都不成功...

希望我的解释清楚。

0 投票
1 回答
685 浏览

java - 过滤时如何从地图中恢复列表(使用流)

我需要过滤一个 HashMap

对于它的一些值并有一个方法

该方法应在过滤 Map 后返回一个包含所有键(匹配值)的列表。

如何处理collect()?我收到一条错误消息

0 投票
1 回答
8861 浏览

dictionary - java 8流分组和求和双

我对 java 8 中的流非常陌生,所以我的方法可能是错误的。

我有2个对象如下

所以我想收集 code1 && code2 && code3 相同的所有 object1,然后将金额加到 object2 列表中。

我没有代码来做...我想编写一个代码来完成我正在尝试从http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html实现某些东西的工作

或者按部门计算所有工资的总和:

0 投票
1 回答
28491 浏览

java - Java 8 Streams:根据不同的属性多次映射同一个对象

我的一位同事向我提出了一个有趣的问题,但我找不到一个简洁漂亮的 Java 8 解决方案。问题是通过 POJO 列表进行流式传输,然后将它们收集到基于多个属性的映射中 - 映射导致 POJO 多次发生

想象一下以下 POJO:

将其设置为List<Customer>

备选方案 1:使用Map“流”外部(或更确切地说是外部forEach)。

备选方案 2:创建地图条目并流式传输它们,然后flatMap是它们。IMO 它有点过于冗长且不易阅读。

替代方案 3:这是迄今为止我提出的另一个“最漂亮”的代码,但它使用了三参数版本,reduce并且第三个参数有点狡猾,正如在这个问题中发现的那样:Purpose of third argument to 'reduce' Java 8 函数式编程中的函数。此外,reduce它似乎不太适合这个问题,因为它正在发生变异,并且并行流可能不适用于下面的方法。

如果上面的代码是这样打印的:

结果将是:

{Super=Customer(Super Mac), Johnny=Customer(Johnny Puma), Mac=Customer(Super Mac), Puma=Customer(Johnny Puma)}
{Super=Customer(Super Mac), Johnny=Customer(Johnny Puma), Mac=Customer(Super Mac), Puma=Customer(Johnny Puma)}
{Super=Customer(Super Mac), Johnny=Customer(Johnny Puma), Mac=Customer(Super Mac), Puma=Customer(Johnny Puma)}

所以,现在我的问题是:我应该如何以 Java 8 有序的方式流过List<Customer>,然后以某种方式收集它作为Map<String, Customer>你将整个事物拆分为两个键 ( firstAND last) 的位置,即Customer映射两次。我不想使用任何 3rd 方库,也不想像 alt 1 那样在流之外使用地图。还有其他不错的选择吗?

完整的代码可以在 hastebin上找到,用于简单的复制粘贴以使整个程序运行。

0 投票
1 回答
615 浏览

java - scala 的 Collectors.groupingBy() 替代方案

在Java中,我有类似的东西:

它工作正常。现在我正在尝试将同样的东西放入 scala 中,例如:

但后来我得到了类似的东西

如果您需要更多信息/代码,请告诉我,我将创建一些虚拟示例,因为我不允许发布确切的代码。

基于@Vladimir Matveev 回答的更新:

pName 应该是字符串,但如果我写,new java.util.function.Function[Re, java.lang.String]那么我会得到一个

0 投票
2 回答
75002 浏览

java - Java 8 toMap IllegalStateException Duplicate Key

I have a file which contains data in the following format

I want to load this to map as {(1->1), (2->1), (3->1)}

This is the Java 8 code,

I am getting the following error

How do I fix this error?

0 投票
1 回答
2026 浏览

java - 如何分组列表> 到地图> 在 Java8 中

我有一个List<Map<String,Object>>

我想按第三个值对其进行分组,以获得Map<String,List<Map<String,Object>>>

是否可以通过使用该Collectors.groupingBy?方法,以及如何?

0 投票
1 回答
8167 浏览

java - Java 8 Streams 修改集合值

使用流 API;过滤相关数据后,我想编辑正在收集的数据。这是到目前为止的代码:

编辑下面的代码很糟糕,我试图避免它。(它也不能完全工作。它是在凌晨 4 点完成的,请原谅。)

它正在寻找文本文件中的特定单词,一旦过滤了该行,我想每次只收集该行的一部分。正在搜索的关键字两侧的多个单词。

例如:

keyword = "the" limit = 1

它会发现:"Early in the morning a cow jumped over a fence."

然后它应该返回:"in the morning"

*PS 任何建议的速度改进都将被投票。

0 投票
1 回答
2243 浏览

java - 列表流的 Java 8 映射

我有一个这样的对象列表:

其中它的每个对象都是一个类的实例Entry,它具有tagvalue作为属性。我想以这种方式对它们进行分组:

这是我到目前为止所做的:

这是我的结果(不是我想要的):

换句话说,我想要一个字符串列表作为我的新映射 ( Map<String, List<String>>) 的值,而不是对象列表 ( Map<String, List<Entry>>)。如何使用 Java 8 的新酷特性来实现这一点?