В стримах есть классный метод peek
Он служит для двух целей:
а)отладка
б)изменение элементов стрима(т.е. peek возвращает тоже стрим, но применяет функцию к
каждому элементу в стриме)

Например, есть некая коллекция:

public static List<Product> productList = Arrays.asList(new Product("Lipton Yellow Label", 131),
			new Product("English Breakfast", 170), new Product("Lipton Green Label", 180),
			new Product("Gold tea", 1000), new Product("Green tea", 199));

Выполним следующий код:

System.out.println(productList);
		System.out.println("==================");
		productList.stream()
				.peek(p->p.setPrice((int) (p.getPrice()*0.8)))
				.collect(Collectors.toList());
		System.out.println( productList);

Здесь мы все цены умножили на 0.8

Получаем вывод на консоль:

[Product [productName=Lipton Yellow Label, price=131], Product [productName=English Breakfast, price=170], Product [productName=Lipton Green Label, price=180], Product [productName=Gold tea, price=1000], Product [productName=Green tea, price=199]]
==================
[Product [productName=Lipton Yellow Label, price=104], Product [productName=English Breakfast, price=136], Product [productName=Lipton Green Label, price=144], Product [productName=Gold tea, price=800], Product [productName=Green tea, price=159]]

Как видим цена уменьшилась на 20%

Реклама