java 两个list 里面对象相同,比如学生对象,相同id的学生的成绩进行累加再返回,不用双重循环O(N^2)复杂度如何实现?lambda如何实现?

sfasdfasdfasf 发布于 2021/12/27 17:36
阅读 720
收藏 0

java 两个list 里面对象相同,比如学生对象,相同id的学生的成绩进行累加再返回,不用双重循环O(N^2)复杂度如何实现?lambda如何实现?

加载中
0
w
wengys

根据id为key建立一个hashmap啊,循环一轮就结束了。

0
z
zb37271269
List<Stu> list = Stream.concat(list1.stream(), list2.stream())
        .collect(Collectors.groupingBy(Stu::getId))
        .entrySet()
        .stream().map(Stu::create)
        .collect(Collectors.toList());
class Stu {
    private Integer id;
    private Integer score;

    public static Stu create(Map.Entry<Integer, List<Stu>> e) {
        return new Stu(e.getKey(), e.getValue().stream().mapToInt(Stu::getScore).sum());
    }
}
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部