将对象列表转换为 Map

Converting a list of objects to Map(将对象列表转换为 Map)
本文介绍了将对象列表转换为 Map的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将玩家列表转换为地图.播放器包含名称和作为变量运行.

I'm trying to convert a list of players into map. player contains name & runs as variables.

List<Player> runnerList = Arrays.asList(new Player("Virat", 4654), new Player("Jaddu", 5798),
            new Player("Dhoni", 4581), new Player("Virat", 8709), new Player("Dhoni", 4711),
            new Player("Virat", 4541));

我的问题是我试图通过使用流组合运行而不是通过来转换为地图.

my problem is i'm trying to convert to map by combining the runs using streams and not getting through.

对每个都进行了尝试并合并了值,如下所示,并获得了预期的结果.

Tried for each and merged the values, like below, and getting expected result.

playerList.forEach(n -> {
            mapVal.merge((n.getName()), (n.getDistance()), (val1, val2) -> IntStream.of(val1, val2).sum());
        });

结果将是 {Dhoni=9292, Jaddu=5798, Virat=17904},正在寻找使用流的解决方案.

result would be {Dhoni=9292, Jaddu=5798, Virat=17904}, looking for a solution using streams.

推荐答案

你可以使用toMap Collector作为:

You can use toMap Collector as:

Map<String, Integer> mapVal = playerList.stream()
        .collect(Collectors.toMap(Player::getName,
                Player::getDistance, Integer::sum));

groupingBy为:

Map<String, Integer> mapVal = playerList.stream()
        .collect(Collectors.groupingBy(Player::getName,
                Collectors.summingInt(Player::getDistance)));

这篇关于将对象列表转换为 Map的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How can create a producer using Spring Cloud Kafka Stream 3.1(如何使用Spring Cloud Kafka Stream 3.1创建制片人)
Insert a position in a linked list Java(在链接列表中插入位置Java)
Did I write this constructor properly?(我是否正确地编写了这个构造函数?)
Head value set to null but tail value still gets displayed(Head值设置为空,但仍显示Tail值)
printing nodes from a singly-linked list(打印单链接列表中的节点)
Control namespace prefixes in web services?(控制Web服务中的命名空间前缀?)