如何在流中收集到TreeMap中?

Krazim00da:

我有两个Collectors.groupingBy在Stream中。而且我需要收集所有信息TreeMap

我的代码:

Map<LocalDate, Map<String, List<RollingField>>> fieldMap = rollingFields.stream().collect(
    Collectors.groupingBy(
            RollingField::getDate,
            Collectors.groupingBy(fi -> fi.getMeta().getName())));

而这个回报HashMap我需要添加什么才能退货TreeMap我需要用进行排序LocalDate

尼古拉斯:

使用特定的方法,它允许提供一个Map工厂通过Supplier
Collectors.groupingBy(Function<..> classifier, Supplier<M> mapFactory, Collector<..> downstream)其中:

  • classifier 将元素映射到键中
  • mapFactory产生一个新的空地图(在这里使用() -> new TreeMap<>()
  • downstream 下游减少

实现方式:

Map<LocalDate, Map<String, List<RollingField>>> fieldMap = rollingFields.stream().collect(
        Collectors.groupingBy(
                RollingField::getDate,                // outer Map keys
                TreeMap::new,                         // outer Map is TreeMap
                Collectors.groupingBy(                // outer Map values
                        fi -> fi.getMeta().getName(), // inner Map keys
                        TreeMap::new,                 // inner Map is TreeMap
                        Collectors.toList()           // inner Map values (default)
                )
        ));

别担心,有没有像这样的重载方法Collectors.groupingBy(Function<..> classifier, Supplier<M> mapFactory)没有downstream的默认实现downstreamCollectors.toList()JavaDoc收集到List,因此可以自由地重用List(

产生的结果类似于: groupingBy(classifier, toList());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java 8中收集到LinkedHashMap

使用Collator在一行中收集到TreeMap

如何在Java 8中将流的结果收集到自定义对象的数组中

如何将流中的元素收集到队列中?

将对象流收集到 Map 中

如何使用Java流将多个列表收集到一个列表中?

如何将Java 8流收集到Guava ImmutableCollection中?

如何在 Java 中使用流/lambda 重复调用 0 参数函数并将返回值收集到列表中?

如何在Python中将元组列表收集到一个元组中?

如何在Python中将用户数字输入收集到列表中?

如何将元组收集到单独的变量中

如何将HashMap的值收集到向量中?

如何从注释中将结果收集到数组中?

在Java 8中使用Lambda将流收集到HashMap中

按键对记录进行分组并收集到Flink流中的ListBuffer中

将输入收集到数组中

如何在PyQt4中使用QtGui将输入变量收集到python程序中?

Java8:按键将流收集到SortedMap中

将流数据收集到角度应用程序中

无法将 Random int 流收集到 List 集合中

Java流将数组收集到一个列表中

处理列表流并仅使用非空值收集到map / ImmutableMap中

如何简洁地将流收集到地图?

如何将流收集到列表?

如何在Swift 5中从自定义对象将所有元素收集到数组

AQL如何将文件以其收集名称收集到数组中?

如何在R中将10列收集到一列中并将其他10列收集到另一个列中,仅具有tidyverse的计数和频率

使用流收集到地图

如何将其他列中的字符收集到一列中?