Java Stream Map: использование и применение
```html
Java Stream API предоставляет нам удобный способ обрабатывать коллекции данных в функциональном стиле. Один из ключевых методов, предоставляемых Stream API, это метод map(). Давайте рассмотрим подробнее его использование и приведем несколько примеров кода.
Метод map() применяет заданную функцию к каждому элементу исходного потока и возвращает новый поток, содержащий результаты преобразования. Таким образом, мы можем изменить тип элементов, преобразовать их значения или применить другие операции к ним.
Пусть у нас есть список чисел:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Мы хотим увеличить каждое число в два раза. Для этого мы можем использовать метод map() следующим образом:
List<Integer> doubledNumbers = numbers.stream()
.map(n -> n * 2)
.collect(Collectors.toList());
В результате мы получим новый список, содержащий числа, увеличенные в два раза: [2, 4, 6, 8, 10]. В этом примере мы передали лямбда-выражение n -> n * 2 в метод map(), которое умножает каждый элемент на два.
Метод map() также позволяет нам преобразовывать типы объектов. Допустим, у нас есть список строк, представляющих числа:
List<String> stringNumbers = Arrays.asList("1", "2", "3", "4", "5");
Мы хотим преобразовать каждую строку в целое число. С помощью метода map() это можно сделать следующим образом:
List<Integer> integerNumbers = stringNumbers.stream()
.map(Integer::parseInt)
.collect(Collectors.toList());
В результате мы получим список целых чисел: [1, 2, 3, 4, 5]. Здесь мы использовали ссылку на метод Integer::parseInt в качестве аргумента для метода map(), который преобразует каждую строку в соответствующее целое число.
Метод map() также позволяет применять более сложные операции к элементам потока. Допустим, у нас есть список объектов типа Person, содержащих информацию о людях:
List<Person> people = Arrays.asList(new Person("Иван", 25), new Person("Мария", 30), new Person("Алексей", 35));
Мы хотим получить список имен людей. Для этого мы можем использовать метод map() следующим образом:
List<String> names = people.stream()
.map(Person::getName)
.collect(Collectors.toList());
В результате мы получим список имен людей: ["Иван", "Мария", "Алексей"]. Здесь мы использовали ссылку на метод Person::getName в качестве аргумента для метода map(), чтобы получить имя каждого человека.
В итоге метод map() в Java Stream API предоставляет гибкую возможность преобразовывать и обрабатывать элементы потока. Он может быть использован для увеличения производительности, изменения типа элементов, а также для применения более сложных операций к данным.