1. 程式人生 > 其它 >Java8新特性兩個關聯集合合併成父子級

Java8新特性兩個關聯集合合併成父子級

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class TestFilter {
    public static void main(String[] args) {
        // 學生
        User user1 = new User("1", "張三", "no1", 27);
        User user2 = new User("2", "李四", "no2", 15);
        User user3 
= new User("3", "王五", "no1", 24); User user4 = new User("4", "趙六", "no3", 15); User user5 = new User("5", "李七", "no1", 29); User user6 = new User("6", "錢八", "no3", 18); List<User> listUser = new ArrayList<>(); listUser.add(user1); listUser.add(user2); listUser.add(user3); listUser.add(user4); listUser.add(user5); listUser.add(user6);
// 學校 School school1 = new School("no1", "國防科技大學", null); School school2 = new School("no2", "南京大學", null); School school3 = new School("no3", "西北工業大學", null); List<School> listSchool = new ArrayList<>(); listSchool.add(school1); listSchool.add(school2); listSchool.add(school3);
// 用Java8新特性 篩選出各個班級的學生 List<School> resultList = listSchool.stream().map(m1 -> { // 根據學校Id獲取合併當前學校的學生 List<User> collect = listUser.stream().filter( m2 -> Objects.equals(m1.getId(), m2.getSchoolId())).collect(Collectors.toList()); m1.setListUser(collect); return m1; }).collect(Collectors.toList()); System.out.println("resultList = " + resultList); } } class User { private String id; private String name; private String schoolId; private int age; public User() { } public User(String id, String name, String schoolId, int age) { this.id = id; this.name = name; this.schoolId = schoolId; this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSchoolId() { return schoolId; } public void setSchoolId(String schoolId) { this.schoolId = schoolId; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class School { private String id; private String schoolName; private List<User> listUser; public School(String id, String schoolName, List<User> listUser) { this.id = id; this.schoolName = schoolName; this.listUser = listUser; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getSchoolName() { return schoolName; } public void setSchoolName(String schoolName) { this.schoolName = schoolName; } public List<User> getListUser() { return listUser; } public void setListUser(List<User> listUser) { this.listUser = listUser; } }