Метод mapToInt
Метод mapToInt преобразует каждый элемент
потока в значение типа int и возвращает
поток примитивов IntStream. В первый
параметр мы передаем функцию-преобразователь,
которая принимает элемент потока и возвращает
целое число. Метод является промежуточной
операцией и не запускает обработку потока
до вызова терминальной операции.
Метод особенно полезен, когда нужно извлечь
числовое поле из объектов или преобразовать
строки в числа, а затем выполнить числовые
операции, такие как sum, average,
min или max.
Синтаксис
IntStream mapToInt(ToIntFunction<? super T> mapper)
Пример
Давайте преобразуем строки в числа и найдем их сумму:
import java.util.List;
import java.util.stream.IntStream;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("1", "2", "3", "4", "5");
IntStream res = list.stream()
.mapToInt(Integer::parseInt);
System.out.println(res.sum());
}
}
Результат выполнения кода:
15
Пример
Давайте извлечем числовое поле из объектов и получим среднее значение:
import java.util.List;
public class Main
{
static class Item
{
String name;
int price;
Item(String name, int price)
{
this.name = name;
this.price = price;
}
}
public static void main(String[] args)
{
List<Item> list = List.of(
new Item("a", 10),
new Item("b", 20),
new Item("c", 30)
);
double res = list.stream()
.mapToInt(item -> item.price)
.average()
.getAsDouble();
System.out.println(res);
}
}
Результат выполнения кода:
20.0
Пример
Давайте преобразуем элементы потока в числа и соберем их в массив:
import java.util.List;
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("1", "2", "3", "4", "5");
int[] res = list.stream()
.mapToInt(Integer::parseInt)
.toArray();
System.out.println(Arrays.toString(res));
}
}
Результат выполнения кода:
[1, 2, 3, 4, 5]