Sobes.tech
Middle
281

Методҳо дар стримҳо барои чӣ барои map(), mapToInt(), mapToDouble() ва mapToLong() пешбинӣ шудаанд?

Ҷавоб аз 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 предпочтительнее, когда результат преобразования является примитивным числовым типом, так как они работают с более эффективными специализированными стримами, которые избегают упаковки/распаковки примитивов в объекты.