1. 程式人生 > 其它 >用1.8流的形式優化以前的雙層for迴圈

用1.8流的形式優化以前的雙層for迴圈

實體類

package loop;

public class UserInfo {
    private String id;
    private String name;
    private String schoolId;
    private String schoolName;

    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 String getSchoolName() { return schoolName; }
public void setSchoolName(String schoolName) { this.schoolName = schoolName; } @Override public String toString() { return "UserInfo{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", schoolId='" + schoolId + '\'' + ", schoolName='" + schoolName + '\'' + '}'; }
public UserInfo(String id, String name, String schoolId, String schoolName) { this.id = id; this.name = name; this.schoolId = schoolId; this.schoolName = schoolName; } }
package loop;

public class School {
    private String id;
    private String schoolName;

    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;
    }

    @Override
    public String toString() {
        return "School{" +
                "id='" + id + '\'' +
                ", schoolName='" + schoolName + '\'' +
                '}';
    }

    public School(String id, String schoolName) {
        this.id = id;
        this.schoolName = schoolName;
    }
}

實現方法

package loop;

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

public class TestLoop {
    public static void main(String[] args) {
        // 學生集合
        List<UserInfo> userInfoList = new ArrayList<>();
        UserInfo userInfo1 = new UserInfo("1000", "張三", "2000", null);
        UserInfo userInfo2 = new UserInfo("1000", "李四", "2001", null);
        UserInfo userInfo3 = new UserInfo("1000", "王五", "2002", null);
        userInfoList.add(userInfo1);
        userInfoList.add(userInfo2);
        userInfoList.add(userInfo3);

        // 學校集合
        List<School> schoolList = new ArrayList<>();
        School school1 = new School("2000", "南京大學");
        School school2 = new School("2001", "東南大學");
        School school3 = new School("2002", "浙江大學");
        schoolList.add(school1);
        schoolList.add(school2);
        schoolList.add(school3);

        // 根據學校Id,將每個學生對應的學校名稱放入(優化以前的雙層for迴圈)
        List<UserInfo> list = userInfoList.stream()
                .map(userInfo -> schoolList.stream()
                        .filter(m1 -> Objects.equals(m1.getId(), userInfo.getSchoolId()))
                        .findAny()
                        .map(m2 -> {
                            userInfo.setSchoolName(m2.getSchoolName());
                            return userInfo;
                        }).orElse(userInfo))
                .collect(Collectors.toList());
        list.forEach(m1 -> {
            System.out.println(m1.toString());
        });
    }
}