java - 是否可以改进将列表转换为排序 map ?

标签 java collections java-stream

现在我有这样的方法:

public static Map<String, Long> getSortedMap(List<String> wordsList) {
    Map<String, Long> countedWords = wordsList.stream()
            .collect(
                    Collectors.groupingBy(Function.identity(), Collectors.counting())
            );
    return new TreeMap<>(countedWords);
}

将字符串列表转换为映射,其中键是列表中的唯一字符串,值是该字符串在列表中重复的次数。然后它按键对 map 进行排序。

  1. 这可以在一个流操作中重写吗?
  2. 是否可以提高执行速度?

最佳答案

您可以使用 Collectors.groupingBymapFactory 作为参数的变体:

public static Map<String, Long> getSortedMap(List<String> wordsList) {
    return wordsList.stream()
            .collect(
                    Collectors.groupingBy(Function.identity(),
                                          TreeMap::new,
                                          Collectors.counting())
            );
}

关于java - 是否可以改进将列表转换为排序 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43180597/

相关文章:

java - 为什么基于流的方法需要这么长时间才能完成?

java - 如何使用 Java Stream 将 List<Src> 映射到对象 Tgt?

java - 添加 Jersey MOXy 导致 Jetty 运行失败

Python:是否有双端队列的线程安全版本?

javascript - 使用 GWT 编辑器框架创建包含 CellList 的模型?

java - 如何在不使用映射的情况下计算字符串在数组中出现的次数?

Swift 集合扩展 : pick every other item

java - 使用并行流返回最快的提供值

Java接口(interface)和抽象中的返回类型

java - Spring 测试/生产应用程序上下文