如何把map的value转为list_如何在Java 8中将Map转换为List

How to convert a Map to List> in Java 8?

I wrote this implementation, but it is not efficient

Map implicitDataSum = new ConcurrentHashMap<>();

//....

List> mostRelevantTitles = new ArrayList<>();

implicitDataSum.entrySet().stream().

.sorted(Comparator.comparing(e -> -e.getValue()))

.forEachOrdered(e -> mostRelevantTitles.add(new Pair<>(e.getKey(), e.getValue())));

return mostRelevantTitles;

I know that it should works using .collect(Collectors.someMethod()). But I don't understand how to do that.

解决方案

Well, you want to collect Pair elements into a List. That means that you need to map your Stream> into a Stream>.

This is done with the map operation:

Returns a stream consisting of the results of applying the given function to the elements of this stream.

In this case, the function will be a function converting a Map.Entry into a Pair.

Finally, you want to collect that into a List, so we can use the built-in toList() collector.

List> mostRelevantTitles =

implicitDataSum.entrySet()

.stream()

.sorted(Comparator.comparing(e -> -e.getValue()))

.map(e -> new Pair<>(e.getKey(), e.getValue()))

.collect(Collectors.toList());

Note that you could replace the comparator Comparator.comparing(e -> -e.getValue()) by Map.Entry.comparingByValue(Comparator.reverseOrder()).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值