Узнайте, как удалять и обновлять элементы коллекции с помощью Stream API в Java с примерами. Стоит отметить, что каждый метод, показанный ниже, создает новый список, исходный список не изменяется после обработки.
1. Удаление элементов с помощью Stream
Удаление элементов очень просто. Мы перебираем элементы Stream и отфильтровываем элементы, которые соответствуют заданному Predicate, переданному в метод Stream.filter().
В следующем примере мы выбираем только тех сотрудников, чьи имена начинаются с символа «А». Все остальные элементы удаляются из потока.
List<Employee> list = List.of(new Employee(1, "Alex", LocalDate.of(1990, 1, 2), 100d),new Employee(2, "Alok", LocalDate.of(1992, 1, 2), 200d),new Employee(3, "Brian", LocalDate.of(1994, 1, 2), 300d),new Employee(4, "Charles", LocalDate.of(1996, 1, 2), 400d));List<Employee> modifiedList = list.stream().filter(e -> e.getName().startsWith("A")).collect(Collectors.toList());//Employees whose names start with "A"System.out.println(modifiedList);
Вывод программы.
[Employee [id=1, name=Alex, dateOfBirth=1990-01-02, salary=100.0],Employee [id=2, name=Alok, dateOfBirth=1992-01-02, salary=200.0]]
2. Обновление элементов с использованием потока
Чтобы обновить все элементы или соответствующие элементы из Stream, мы используем метод Stream.map() и возвращаем новый экземпляр Employee. Все измененные экземпляры собираются в новый List.
В следующем примере мы обновляем зарплату всех сотрудников на 100. Измененные элементы собираются в newList.
List<Employee> list = List.of(new Employee(1, "Alex", LocalDate.of(1990, 1, 2), 100d),new Employee(2, "Alok", LocalDate.of(1992, 1, 2), 200d),new Employee(3, "Brian", LocalDate.of(1994, 1, 2), 300d),new Employee(4, "Charles", LocalDate.of(1996, 1, 2), 400d));List<Employee> newList = list.stream().map(e -> {e.setSalary(e.getSalary() + 100);return e;}).collect(Collectors.toList());System.out.println(newList);
Вывод программы.
[Employee [id=1, name=Alex, dateOfBirth=1990-01-02, salary=200.0],Employee [id=2, name=Alok, dateOfBirth=1992-01-02, salary=300.0],Employee [id=3, name=Brian, dateOfBirth=1994-01-02, salary=400.0],Employee [id=4, name=Charles, dateOfBirth=1996-01-02, salary=500.0]]
3. Заключение
В этом кратком руководстве по Java мы научились удалять элементы из списка с помощью метода Java 8 Stream.filter(). Мы также научились обновлять элементы потока с помощью метода Stream.map().