主页>技术知识>详情

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

villain/2022-02-23/85阅读 /0评论
java 两个list 里面对象相同,比如学生对象,相同id的学生的成绩进行累加再返回,不用双重循环O(N^2)复杂度如何实现?lambda如何实现?简介:java 两个list 里面对象相同,比如学生对象,相同id的学生的成绩进行累加再返回,不用双重循环O(N^2)复杂度如何实现?lambda如何实现?解决方法:<p>根据id为key建立一个hashmap啊,循环一轮就结束了。&

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

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


解决方法:

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


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());
    }
}
本文用户投稿或网站收集转载,如有侵权请联系本站。