问题标签 [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 - Java 8 - 字数,然后按 desc 顺序排列
我有一个单词列表,说
如何按降序获取列表中重复多次的前七个单词?然后单词应按字母顺序排列。所以上面的输出应该是前七个词
我正在使用流 lamda 在 Java 8 中执行此操作。
我正在尝试这种方式。首先对列表进行排序其次获取单词映射及其在单词列表中的单词数。
java - 收集器的运行时复杂度#toList
在 Java 库源代码中,该Collectors#toList
方法是这样定义的:
我们将BinaryOperator
其视为构造函数的第三个参数CollectorImpl
,它在线性时间内合并了两个子结果。
是不是说,如果通过Stream#collect
方法频繁使用这个函数,我们可以获得平方计算时间?
考虑这段代码:
第二个流的元素恰好按降序计算。collect 方法可以做的最简单的事情是将每个数字包装成List
并将所有下一个数字添加到其中,总复杂度为平方,多么可悲。
java - JAVA-8 流收集高级用法
我想提取学生姓名,最大年龄,按类型分组学生。是否可以在“收集”本身中使用任何组合?
我想要这样的输出:
java - Java 8 - 如何使用带有 groupingBy 和 summingInt 的 lambda 并使用按位运算符
我有自己的类CheckIn
,其属性day
为 as String
,workingHours
asint
和inProgress
as boolean
:
我的系统中有条目列表,我需要这些条目的摘要并将它们与天分组并总结工作时间。在这里没问题,我可以使用 lambda 来实现,但是如果条目中的任何内容为真,那么我想将进度设置为真怎么办?
我需要summary
列表包含(在这种情况下用于输入)在这 3 天内有 3 个项目:
我想要这样的结果:
- 第一项
"26-11-2015" , 13 , true
<--true
因为“2015 年 26 月 11 日”有 1 项为真。 - 第二项
"27-11-2015" , 10 , false
- 第三项
"28-11-2015" , 18 , true
inProgress
如果那天有任何条目,我希望摘要为真,inProgress == true
它是否适用于 lambda?
java - Java8在并行停顿中重新索引地图“groupingBy”计数
我需要按子项目数索引以前构建的地图。
当我运行以下代码时,它会停止。删除.parallel()
指令,它运行正常。
我错过了什么?
java - 从 Collectors.partitioningBy 返回非 Class 类型
在这个例子中
stream.collect
检索布尔映射,因此List<MyClass>
它不起作用。我应该怎么做才能返回Boolean
and的地图List<Integer>
?
java - 使用 Stream 和 java8 在一个字符串中返回最小值、最大值、平均值、总和、工资计数
我有一个List
以薪水为特征的员工。为什么这段代码不起作用?
我正在使用一套收集器。
java - Stream groupingBy:减少到列表的第一个元素
我有一个List<Valuta>
可以表示(简化)的 JSON 样式:
[ { codice=EUR, description=Euro, ratio=1 }, { codice=USD, description=Dollars, ratio=1.1 } ]
我想把它Map<String, Valuta>
改成这样:
{ EUR={ codice=EUR, description=Euro, ratio=1 }, USD={ codice=USD, description=美元, ratio=1.1 }}
我写了这个单行:
但这会返回 aMap<String, List<Valuta>>
而不是我需要的。
我想mapping()
函数对我有用,但不知道如何。
java - 如何处理生成的列表同一`stream()`中`groupingBy`的值?
简而言之: collect(groupingBy())
返回一个 mapMap<K, List<T>>
。如何用的新值(类)K
值,并返回相同的? List<T>
U
List<T>
Map<K, U>
stream()
一个例子:假设我有一个Task
,它由 ataskId
和一个Job
s 列表组成:
对于每个Job
, 方法getAgentId
确定一个能够处理它的“代理”:
ATask
被划分为多个 sub - Task
s 使得它们中的每一个都可以由一个单独的“代理”处理:
我的尝试:我用过groupingBy
:
问题:但是我想返回Map<Integer, Task>
而不是Map<Integer, List<Job>>
; 也就是说,我想将结果包装List<Job>
成groupingBy
一个新Task
的 bynew Task(id, the resulting List<Job>)
。怎么做?或者有没有没有的替代品groupingBy
?
java - Java Streams:获取按内部映射键分组的值
我有Map<A, Map<B, C>>
并且我想Map<B, List<C>>
使用 Java Streams 从中获得。
我尝试按如下方式进行:
我的期望:
flatMap
给出Stream
一个Map.Entry<B, C>
collect(Collectors.groupingBy(...))
接受应用于Map.Entry<B, C>
并返回的函数B
,因此它收集C
into的值List<C>
。
但它不会编译,字面意思是:
不能从静态上下文中引用非静态方法
在Map.Entry::getKey
最后一行。
有人可以解释什么是错的或实现我想要的正确方法是什么?