问题标签 [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 回答
4907 浏览

java - Java 8 - 字数,然后按 desc 顺序排列

我有一个单词列表,说

如何按降序获取列表中重复多次的前七个单词?然后单词应按字母顺序排列。所以上面的输出应该是前七个词

我正在使用流 lamda 在 Java 8 中执行此操作。

我正在尝试这种方式。首先对列表进行排序其次获取单词映射及其在单词列表中的单词数。

0 投票
1 回答
1138 浏览

java - 收集器的运行时复杂度#toList

在 Java 库源代码中,该Collectors#toList方法是这样定义的:

我们将BinaryOperator其视为构造函数的第三个参数CollectorImpl,它在线性时间内合并了两个子结果。

是不是说,如果通过Stream#collect方法频繁使用这个函数,我们可以获得平方计算时间?

考虑这段代码:

第二个流的元素恰好按降序计算。collect 方法可以做的最简单的事情是将每个数字包装成List并将所有下一个数字添加到其中,总复杂度为平方,多么可悲。

0 投票
3 回答
2476 浏览

java - JAVA-8 流收集高级用法


我想提取学生姓名,最大年龄,按类型分组学生。是否可以在“收集”本身中使用任何组合?

我想要这样的输出:

0 投票
1 回答
1127 浏览

java - Java 8 - 如何使用带有 groupingBy 和 summingInt 的 lambda 并使用按位运算符

我有自己的类CheckIn,其属性day为 as StringworkingHoursasintinProgressas 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?

0 投票
1 回答
169 浏览

java - Java8在并行停顿中重新索引地图“groupingBy”计数

我需要按子项目数索引以前构建的地图。

当我运行以下代码时,它会停止。删除.parallel()指令,它运行正常。

我错过了什么?

0 投票
2 回答
511 浏览

java - 从 Collectors.partitioningBy 返回非 Class 类型

在这个例子中

stream.collect检索布尔映射,因此List<MyClass>它不起作用。我应该怎么做才能返回Booleanand的地图List<Integer>

0 投票
2 回答
3916 浏览

java - 使用 Stream 和 java8 在一个字符串中返回最小值、最大值、平均值、总和、工资计数

我有一个List以薪水为特征的员工。为什么这段代码不起作用?

我正在使用一套收集器。

0 投票
6 回答
25443 浏览

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()函数对我有用,但不知道如何。

0 投票
1 回答
345 浏览

java - 如何处理生成的列表同一`stream()`中`groupingBy`的值?

简而言之: collect(groupingBy())返回一个 mapMap<K, List<T>>。如何用的新值(类)K值,并返回相同的? List<T>UList<T>Map<K, U> stream()


一个例子:假设我有一个Task,它由 ataskId和一个Jobs 列表组成:

对于每个Job, 方法getAgentId确定一个能够处理它的“代理”:

ATask被划分为多个 sub - Tasks 使得它们中的每一个都可以由一个单独的“代理”处理:


我的尝试:我用过groupingBy

问题:但是我想返回Map<Integer, Task>而不是Map<Integer, List<Job>>; 也就是说,我想将结果包装List<Job>groupingBy一个新Task的 bynew Task(id, the resulting List<Job>)。怎么做?或者有没有没有的替代品groupingBy

0 投票
2 回答
5139 浏览

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,因此它收集Cinto的值List<C>

但它不会编译,字面意思是:

不能从静态上下文中引用非静态方法

Map.Entry::getKey最后一行。

有人可以解释什么是错的或实现我想要的正确方法是什么?