如何将HashMap 更改为LinkedHashMap 通过流

问题描述 投票:0回答:1

我是Java新手,现在尝试使用lambda / stream。如何按价值制作地图?我尝试了这个,但是不正确:

time = time.entrySet().stream()
           .sorted(Comparator.comparing(Map.Entry::getValue))
           .collect(Collectors.toMap((String)Map.Entry::getKey, 
                      (Long)Map.Entry::getValue, LinkedHashMap::new));

现在我可以找到下一个代码,但是不知道如何实现它:

Collector<T, ?, M> toMap(Function<? super T, ? extends K> keyMapper,   
                        Function<? super T, ? extends U> valueMapper,   
                        BinaryOperator<U> mergeFunction,   
                        Supplier<M> mapSupplier)
java lambda stream
1个回答
0
投票

您忘记了指定合并功能。

time = time.entrySet()
           .stream()
           .sorted(Comparator.comparing(Map.Entry::getValue))
           .collect(Collectors.toMap(Map.Entry::getKey, 
                                    Map.Entry::getValue,
                                    (v1,v2)->v1,
                                    LinkedHashMap::new));

顺便说一句,假设time不是原始的Map,则不必将Map.Entry::getKey强制转换为String,而不必将Map.Entry::getValue强制转换为Long

© www.soinside.com 2019 - 2024. All rights reserved.