gpt4 book ai didi

java - 使用 java 流将评级列表转换为平均评级列表

转载 作者:行者123 更新时间:2023-12-01 21:41:45 27 4
gpt4 key购买 nike

我在 Java 中遇到了流的问题,这困扰了我一整天。因此,如果有人可以帮助我,我会非常高兴。

我有两个类(class) Rate 和 AvgRate:

class Rate {
private int itemId;
private int userId;
private int rate;

[...]
}

class AvgRate {
private int itemId;
private int avgRate;

[...]
}

假设我有费率列表:

//Rate(itemId, userId, rate)
List<Rate> rates = Arrays.asList(
new Rate(1, 1, 3),
new Rate(1, 2, 1),
new Rate(1, 3, 4),
new Rate(1, 4, 2),
new Rate(2, 1, 5),
new Rate(2, 2, 1),
new Rate(3, 3, 2),
);

现在我想计算每个项目的平均评分并将其放入列表中,例如

//(itemId, avgRating)
List<AvgRate> avgRates = {
(1, 2,5),
(2, 3),
(3, 2)
}

所以问题是我如何使用 Java 流来执行此操作。

感谢您的建议。

最佳答案

尝试这样的事情:

Map<Integer, Integer> avgInteger = rates.stream()
.collect(Collectors.groupingBy(Rate::getItemId, Collectors.averagingInt(Rate::getRate));

List<AvgRate> avgRates = avgInteger.entrySet().stream()
.map(entry -> new AvgRate(entry.getKey(), entry.getValue()))
.collect(Collectors.toList());

第一个 block 将您的列表转换为 itemIdrate 平均值的 Map。第二个 block 将 Map 转换回 List

关于java - 使用 java 流将评级列表转换为平均评级列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36376654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com