问题标签 [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.
java - partitioningBy的目的是什么
例如,如果我打算对一些元素进行分区,我可以执行以下操作:
输出:
但对我partioningBy
来说只是groupingBy
. 尽管前者接受 aPredicate
作为参数,而后者接受 a Function
,但我只是将分区视为正常的分组函数。
所以同样的代码做同样的事情:
这也导致Map<Boolean, List<String>>
.
那么有什么理由我应该使用partioningBy
而不是groupingBy
?谢谢
java - 从 Java 8 流中删除与模式匹配的序列
我正在发现 Java 8,尤其是Stream的使用,它看起来非常强大。不过,我在表达查询时遇到了问题。
我有一个要分析的事件对象列表。我想在这个列表中找出一些不好的模式(事件序列),应该删除。
基本上,一个事件对象有 3 个字段:
- Element eventSource(Element 超类的对象,例如 VirtualMachine),
- String eventName(事件类的类型,例如“VMHighCpu”或“VMLowCpu”),
- 字符串 eventMetric(涉及的指标,例如“cpu”)。
如果我有 2 个与相同源和相同指标相关的事件,但它们是相反的(例如,一个是“VMHighCpu”类型,另一个是“VMLowCpu”类型),我想从我的列表中删除这两个事件。
我尝试了几件事都不成功...
希望我的解释清楚。
java - 过滤时如何从地图中恢复列表(使用流)
我需要过滤一个 HashMap
对于它的一些值并有一个方法
该方法应在过滤 Map 后返回一个包含所有键(匹配值)的列表。
如何处理collect()?我收到一条错误消息
dictionary - java 8流分组和求和双
我对 java 8 中的流非常陌生,所以我的方法可能是错误的。
我有2个对象如下
所以我想收集 code1 && code2 && code3 相同的所有 object1,然后将金额加到 object2 列表中。
我没有代码来做...我想编写一个代码来完成我正在尝试从http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html实现某些东西的工作
或者按部门计算所有工资的总和:
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>
你将整个事物拆分为两个键 ( first
AND last
) 的位置,即Customer
映射两次。我不想使用任何 3rd 方库,也不想像 alt 1 那样在流之外使用地图。还有其他不错的选择吗?
完整的代码可以在 hastebin上找到,用于简单的复制粘贴以使整个程序运行。
java - scala 的 Collectors.groupingBy() 替代方案
在Java中,我有类似的东西:
它工作正常。现在我正在尝试将同样的东西放入 scala 中,例如:
但后来我得到了类似的东西
如果您需要更多信息/代码,请告诉我,我将创建一些虚拟示例,因为我不允许发布确切的代码。
基于@Vladimir Matveev 回答的更新:
pName 应该是字符串,但如果我写,new java.util.function.Function[Re, java.lang.String]
那么我会得到一个
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?
java - 如何分组列表
我有一个List<Map<String,Object>>
我想按第三个值对其进行分组,以获得Map<String,List<Map<String,Object>>>
:
是否可以通过使用该Collectors.groupingBy?
方法,以及如何?
java - Java 8 Streams 修改集合值
使用流 API;过滤相关数据后,我想编辑正在收集的数据。这是到目前为止的代码:
编辑下面的代码很糟糕,我试图避免它。(它也不能完全工作。它是在凌晨 4 点完成的,请原谅。)
它正在寻找文本文件中的特定单词,一旦过滤了该行,我想每次只收集该行的一部分。正在搜索的关键字两侧的多个单词。
例如:
keyword = "the"
limit = 1
它会发现:"Early in the morning a cow jumped over a fence."
然后它应该返回:"in the morning"
*PS 任何建议的速度改进都将被投票。
java - 列表流的 Java 8 映射
我有一个这样的对象列表:
其中它的每个对象都是一个类的实例Entry
,它具有tag
和value
作为属性。我想以这种方式对它们进行分组:
这是我到目前为止所做的:
这是我的结果(不是我想要的):
换句话说,我想要一个字符串列表作为我的新映射 ( Map<String, List<String>>
) 的值,而不是对象列表 ( Map<String, List<Entry>>
)。如何使用 Java 8 的新酷特性来实现这一点?