如何使用Java 8流和Lambda迭代和处理其值是元素列表的地图的值

Saravana Kumar M:

要点:我们正在尝试尽可能使用Java 8流和lambda重写旧的Java代码。

问题:我有一个映射,其键是字符串,值是用户定义对象的列表。

Map<String, List<Person>> personMap = new HashMap<String, List<Person>>();
personMap.put("A", Arrays.asList(person1, person2, person3, person4));
personMap.put("B", Arrays.asList(person5, person6, person7, person8));

在此,人员根据其姓名的起始字符进行分组。

我想在列表中找到地图上每个键的平均年龄。

出于同样的原因,我尝试了stackoverflow中提到的许多事情,但是没有一个与我的情况匹配,或者在语法上很少有问题。

提前致谢!

雅各布·G:

您没有指定如何(或是否)希望存储年龄,因此目前我只是打印声明。不过,这很简单,只需遍历中的每个条目Map并打印每个条目的平均值List(将Person对象映射到其年龄之后):

personMap.forEach((k, v) -> {
    System.out.println("Average age for " + k + ": " + v.stream().mapToInt(Person::getAge).average().orElse(-1));
});

如果您想将其存储在另一个容器中Map,则可以很容易地将其收集到一个容器中:

personMap.entrySet()
         .stream()
         .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
                                                            .stream()
                                                            .mapToInt(Person::getAge)
                                                            .average()
                                                            .orElse(-1)));

注意-1如果不存在平均值,则返回,并且假定Person调用中存在getter方法getAge,并返回int

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Java 8流迭代地图的地图内的列表

如何列表,地图和“打印如果计数> 0”与Java 8 /流API?

使用流从地图和值,并收集到列表

如何使用Java流扁平化地图值

创建使用Java 8流API字符串和排序列表中的地图

如何通过使用Java 8流列表过滤地图?

使用Java8流找到从地图的最高值

使用Java 8流处理地图列表

如何在配对另一个地图时(使用流)同时迭代列表和集合

如何使用Java 8流将列表中的值相乘

使用Lambda和流按值对地图进行排序

Java 8流和地图值得吗?

如何使用Java 8流将列表中的元素映射到其索引?

如何使用Lambda流迭代嵌套列表?

迭代地图和更改值时如何避免ConcurrentModificationException?

如何使用改进的Java 8迭代来迭代和处理Map键/值

Java 8使用流,flatMap和lambda

如何使用Java8流和groupBy从地图获取多级聚合结果?

如何使用Java 8从对象列表中获取最小值和最大值

如何使用Java 8流和Lambda将FlatMap分组

如何使用Java 8中的lambda和流检查整数类型的所有元素是否在给定范围内?

如何在Node中使用for..of迭代地图的键和值?

使用Java 8 Streams API和Lambda处理地图

使用Java 8 Streams API列出迭代和设置值

如何使用Lambda,Java在列表迭代结束时返回值

Java 8将for循环和值求和转换为流/ lambda?

如何使用Java 8和流将属性值从列表的第一个元素传播到所有列表元素?

如何使用Java lamda和流对MultipartFile数组进行迭代

Java 8-如何使用流收集器对地图列表进行分组和求和

TOP 榜单

热门标签

归档