使用 Guava 的 ImmutableSortedMap 作为频率图

Eri*_*lja 4 java guava java-8

ImmutableSortedMap.toImmutableSortedMap()当我想创建频率图时,我在理解如何使用时遇到问题。我知道Multiset(之前问过这个问题并得到了很好的帮助),但这次我不想使用它,因为它需要我编写一个自定义序列化程序来创建一个适用于所述 json 的消费者的 json 表示。

下面的代码有效,即它创建了所需的频率图,按键升序排序,但它使用一个临时映射,然后我用它来创建ImmutableSortedMap. 我想摆脱临时地图。我尝试在toImmutableSortedMap()这种情况下使用收集器方法未能生成甚至编译的代码......

我使用的是 Java 8 和Guava 28.1

@Test
public void test() {
    Map<String, Long> intermediateMap = Stream.of("b", "a", "c", "b")
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    ImmutableSortedMap<String, Long> desiredMap = ImmutableSortedMap.copyOf(intermediateMap);

    System.out.println(desiredMap); // Outputs {a=1, b=2, c=1}, which is the desired state
}
Run Code Online (Sandbox Code Playgroud)