Как заменить два вложенных цикла for и if с помощью stream - PullRequest
0 голосов
/ 20 мая 2019

У меня есть оператор if, вложенный в цикл for, и оба они вложены в другой цикл for.Я хотел бы получить несколько предложений, если его можно заменить с помощью потокового API, и если его нужно заменить или оставить как есть.

Я искал решения, но то, что я хочу, кажется более сложным, так как мне нужноизменить список на основе идентификатора, совпадающего с другим списком.

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

Для получения того же результата с использованием потоков.

Ответы [ 2 ]

5 голосов
/ 20 мая 2019

Если вы хотите использовать Stream APIs, используйте следующий код.

userList.forEach(user -> {
    vehicleList.stream()
        .filter(vehicle -> vehicle.getUserID().equals(user.getId()))
        .forEach(user::addVehicleToList);
    });
0 голосов
/ 20 мая 2019

Я думаю, вы ищете что-то подобное

userList.forEach(
    user -> vehicleList.stream()
            .filter(vehicle -> vehicle.getUserID().equals(user.getId()))
            .forEach(user::addVehicleToList)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...