问题标签 [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 - groupingBy和一步过滤
我有一个Stream<String>
,我想要一个Map<Integer, String>
。让我们调用我的分类器函数getKey(String)
- 它可能很昂贵。有时它返回零,这意味着字符串应该被丢弃并且不包含在结果映射中。
所以,我可以使用这段代码:
这首先将不需要的字符串添加到以零为键的 Map 中,然后将其删除。他们可能有很多。有没有一种优雅的方法可以避免首先将它们添加到地图中?
我不想在分组之前添加过滤步骤,因为这意味着执行决策/分类代码两次。
lambda - Collectors.toMap 的 mergeFunction 是否允许修改其参数?
我有一个Stream<Map<String, Map<String, String>>>
要组合的嵌套映射流(使用外部键;假设内部键是唯一的),方法是转换为条目集流并调用Collectors.toMap(...)
. 为了确保正确组合具有重复外键的映射,我传递以下BinaryOperator
函数toMap(...)
:
该代码似乎暂时有效,但我觉得我没有Collectors.toMap(...)
按预期使用,因为我正在改变累加器和组合器中的值。
这是完整的代码片段:
java-8 - 如何显式使用顺序收集器
首先断言顺序 == !parallel
Java-8Stream
接口提供了两种collect
方法:
我需要一个收集器,它按顺序收集(或可变地减少)元素(用例:多个地图(元素可以是地图,递归地)合并,顺序相关)。不需要组合器(Collectors.of
方法也需要组合器)。有没有更好的方法以某种方式明确地做到这一点?
- 使用定制的
Collector
? - 没有组合器参数的类似
of
方法? - 来自库的现有方法?
或者不一定是顺序收集器,而是具有严格从左到右组合器的并行方法。
事实上,正确的关键字应该是Folding Collector。
java - Java 8 Stream API toMap 转换为 TreeMap
我有
我需要将它们转换为
我知道如何使用 HashMap 进行转换
但我需要 TreeMap 与: 键 - 最新消息发送日期第一的用户 值 - 列表按发送日期最新排序
用户类的一部分
用户比较器:
java-8 - 我们可以转换列表吗
我有一个List<Map<String, Object>>
这样的列表
使用带有 groupBy 方法的 Stream API salesReportForSoldProperty.stream().collect(Collectors.groupingBy(tags -> tags.get("D")))
,我可以获得集合Map<Object, List<Map<String, Object>>>
但是当我尝试创建这个集合的 JSON 时,我得到这样的 Json
这里每个值都是 JSONArray,因为我得到Map<Object, List<Map<String, Object>>>
. 有没有办法Map<Object, Map<String, Object>>
使用 Stream API 来收集,所以我可以得到一个正确的 JSON(没有 JSONArray 值)
java-8 - 如何使用 Java Stream API 删除“-”并修剪地图键的空白
我有一张地图
当我将 Map 转换为 JSON 时,我得到了这个
但是在这里我有一个问题,我不想要 JSON 键中的空格和“-”。那么我们可以通过 JAVA Stream API 解决它,所以它会给我地图的密钥,没有空格和'-'?像键“Sold Third Party”应该是“SoldThirdParty”
java-8 - 当键与 Java Stream API 重复时如何添加 Map 的内部元素
我有一个List<Map<String, Object>>
这样的列表
我正在使用此流 API 方法将此列表转换为 Map
但它抛出了我java.lang.IllegalStateException: Duplicate key
的异常,因为我的列表有重复的键
我想添加重复键的内部元素,我想要这样的输出
是否可以通过 Java 流 API?
java - 无法解析 lambda 参数的类型
所以我正在尝试实现一个自定义收集器,但不幸的是我遇到了一个非常有趣的问题:
所以在上面的代码中,编译器无法解析类型为 elem 对象的任何方法TripResultDTO
。
不用说该getOutbound
方法以红色突出显示,无法解决。TripResultsDTO
通过查看似乎被简单地视为Object
而不是的实例的智能感觉,这很奇怪TripResultDTO
。你知道为什么会发生这种情况吗?
也欢迎以更好的方式做我正在做的事情的任何想法。
java - 使用流转换和过滤 Java Map
我有一个想要转换和过滤的 Java 地图。作为一个简单的例子,假设我想将所有值转换为整数,然后删除奇数条目。
这是正确的并且产生:{a=1234, c=3456}
但是,我不禁想知道是否有办法避免调用.entrySet().stream()
两次。
有没有一种方法可以同时执行转换和过滤操作, .collect()
最后只调用一次?