排序地图分组通过计数

时间:2018-11-20 19:12:59

标签: sorting java-8 java-stream counting collectors

是否可以在不创建新流的情况下在此收集器内按值对映射进行排序? 现在打印:AAS:5 ABA:195 ABC:12 ABE:52。 期望的:ABA:195 ABE:52 ... getTrigraphStream(path)返回:TRA GRI ONC GRI ONC INS WHE INS WHE

/etc/rabbitmq/rabbitmq-env.conf

1 个答案:

答案 0 :(得分:1)

  

有没有办法在此收集器内按值对地图进行排序而无需   创建一个新的流?

答案是否定的。您只能在完成分组后按分组的值进行排序。

选项:

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

return getTrigraphStream(path)
       .collect(collectingAndThen(groupingByConcurrent(Function.identity(), counting()),
                  map -> map.entrySet().stream().sorted(....).collect(...)));

顺便说一句,创建新流有什么问题?这是一个廉价的操作。