Sobes.tech
Middle
294

Pentru ce sunt destinate metodele map(), mapToInt(), mapToDouble() și mapToLong() în fluxuri?

Răspuns de la AI

sobes.tech AI

Эти методы используются для преобразования элементов стрима из одного типа в другой. Они применяют функцию к каждому элементу и возвращают новый стрим с преобразованными элементами.

  • map(Function<? super T, ? extends R> mapper): Преобразует стрим объектов типа T в стрим объектов типа R. mapper — это функция, которая принимает элемент типа T и возвращает элемент типа R.

    // Пример: преобразование стрима строк в их длины
    List<String> words = Arrays.asList("hello", "world");
    Stream<Integer> lengths = words.stream()
                                   .map(String::length);
    
  • mapToInt(ToIntFunction<? super T> mapper): Преобразует стрим объектов типа T в специализированный стрим примитивных int значений (IntStream). mapper — это функция, которая принимает элемент типа T и возвращает int.

    // Пример: преобразование стрима строк в их хэш-коды (int)
    List<String> words = Arrays.asList("hello", "world");
    IntStream hashCodes = words.stream()
                               .mapToInt(String::hashCode);
    
  • mapToDouble(ToDoubleFunction<? super T> mapper): Преобразует стрим объектов типа T в специализированный стрим примитивных double значений (DoubleStream). mapper — это функция, которая принимает элемент типа T и возвращает double.

    // Пример: преобразование стрима строк в их длину как double
    List<String> words = Arrays.asList("hello", "world");
    DoubleStream doubleLengths = words.stream()
                                   .mapToDouble(String::length); // Результат будет double
    
  • mapToLong(ToLongFunction<? super T> mapper): Преобразует стрим объектов типа T в специализированный стрим примитивных long значений (LongStream). mapper — это функция, которая принимает элемент типа T и возвращает long.

    // Пример: преобразование стрима строк в их длину как long
    List<String> words = Arrays.asList("hello", "world");
    LongStream longLengths = words.stream()
                                 .mapToLong(String::length); // Результат будет long
    

Использование mapToInt, mapToDouble и mapToLong предпочтительнее, когда результат преобразования является примитивным числовым типом, так как они работают с более эффективными специализированными стримами, которые избегают упаковки/распаковки примитивов в объекты.