首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序图groupingBy计数

排序图groupingBy计数
EN

Stack Overflow用户
提问于 2018-11-20 19:12:58
回答 1查看 265关注 0票数 1

有没有办法在不创建新流的情况下按此收集器内的值对地图进行排序?现在打印: AAS :5 ABA : 195 ABC : 12 ABE : 52。期望: ABA : 195 ABE : 52 .getTrigraphStream(路径)返回: TRA、ONC、ONC、WHE、WHE、WHE等

代码语言:javascript
复制
 public Map<String, Long> getTrigraphStatisticsMapAlphabet(String path) {
    return getTrigraphStream(path)
       .collect(groupingByConcurrent(Function.identity(),
           ConcurrentSkipListMap::new, counting()));
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-20 20:35:41

有没有办法在不创建新流的情况下按此收集器内的值对地图进行排序?

答案是否定的。只有在完成分组后,才能根据分组的值进行排序。

选项:

  1. 您需要在分组和按值排序之后调用stream()方法,然后将其收集到映射中。
  2. 使用带有整理功能的collectingAndThen进行排序,然后收集到地图。

代码语言:javascript
复制
return getTrigraphStream(path)
       .collect(collectingAndThen(groupingByConcurrent(Function.identity(), counting()),
                  map -> map.entrySet().stream().sorted(....).collect(...)));

顺便问一下,创建一个新流有什么问题?这是个廉价的行动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53399973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档