java 8 - 打印按键排序的地图

Bic*_*ick 1 java-8 java-stream

我正在打印一个按键排序的地图,中间对象 LinkedHashMap 如下;

 LinkedHashMap<String, AtomicInteger> sortedMap = wcMap.entrySet().stream()
            .sorted(Map.Entry.comparingByKey())
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                    (oldValue, newValue) -> oldValue, LinkedHashMap::new));

 sortedMap.forEach((k, v) -> System.out.println(String.format("%s ==>> %d",k, v.get())));
Run Code Online (Sandbox Code Playgroud)

如何在收集之前直接从流中打印它?

War*_*ard 5

如果您对收集的内容不感兴趣LinkedHashMap

wcMap.entrySet().stream()
        .sorted(Map.Entry.comparingByKey())
        .forEachOrdered(e -> System.out.println(String.format("%s ==>> %d", e.getKey(), e.getValue().get()));
Run Code Online (Sandbox Code Playgroud)

或者甚至更好:

wcMap.entrySet().stream()
        .sorted(Map.Entry.comparingByKey())
        .map(e -> String.format("%s ==>> %d", e.getKey(), e.getValue().get()))
        .forEachOrdered(System.out::println);
Run Code Online (Sandbox Code Playgroud)

如果您仍然想要结果LinkedHashMap,请使用peek()

wcMap.entrySet().stream()
        .sorted(Map.Entry.comparingByKey())
        .peek(e -> System.out.println(String.format("%s ==>> %d", e.getKey(), e.getValue().get())))
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                (oldValue, newValue) -> oldValue, LinkedHashMap::new));
Run Code Online (Sandbox Code Playgroud)