我是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)
您忘记了指定合并功能。
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
。