如何用流替换两个嵌套的for循环和if语句

时间:2019-05-20 11:13:56

标签: java java-stream

我有一个if语句嵌套在for循环内,而这两个都嵌套在另一个for循环内。我想提出一些建议,如果可以使用流API对其进行替换,以及是否应该对其进行替换或保留原样。

我一直在寻找解决方案,但是我想要的东西似乎更加复杂,因为我需要基于与另一个列表匹配的ID来修改列表。

for (User user : userList) {
    for (Vehicle vehicle : vehicleList) {
        if (user.getId().equals(vehicle.getUserID())) {
            user.addVehicleToList(vehicle);
        }
    }
}

使用流产生相同的结果。

2 个答案:

答案 0 :(得分:5)

如果要使用Stream API,请使用以下代码。

userList.forEach(user -> {
    vehicleList.stream()
        .filter(vehicle -> vehicle.getUserID().equals(user.getId()))
        .forEach(user::addVehicleToList);
    });

答案 1 :(得分:0)

我想您正在寻找类似的东西

userList.forEach(
    user -> vehicleList.stream()
            .filter(vehicle -> vehicle.getUserID().equals(user.getId()))
            .forEach(user::addVehicleToList)
);