Информация об изменениях

Сообщение Re[8]: mapToInt от 05.01.2015 19:11

Изменено 05.01.2015 19:12 vsb

Здравствуйте, Yoriсk, Вы писали:

vsb>>mapToInt это следствие того, что в Java все типы делятся на примитивные и классы.


Y>И поэтому деньги в int хранятся?


Да хоть в чём.

Q>>>А `.mapToMyCustomType()` есть?

vsb>>map(u -> u.getAnything()) есть.

Y>У класса user есть поле типа Currency. Как это будет выглядеть в java?


map(u -> u.getAnything()).collect(currencySum())

currencySum это т.н. collector, который пишется один раз и по-хорошему предоставляется разработчиком класса Currency. Пишется в 3 строчки, по сути это reduce-функция.

Кстати это всё одной строчкой распараллеливается на много потоков, если у нас пользователей многие миллионы. И всё аккуратно посчитается, просуммируется, и вернёт один результат довольно эффективно.
Здравствуйте, Yoriсk, Вы писали:

vsb>>mapToInt это следствие того, что в Java все типы делятся на примитивные и классы.


Y>И поэтому деньги в int хранятся?


Да хоть в чём.

Q>>>А `.mapToMyCustomType()` есть?

vsb>>map(u -> u.getAnything()) есть.

Y>У класса user есть поле типа Currency. Как это будет выглядеть в java?


map(u -> u.getAnything()).collect(currencySum())

currencySum это т.н. collector, который пишется один раз и по-хорошему предоставляется разработчиком класса Currency. Пишется в 3 строчки, по сути это reduce-функция. Может лучше через вызов reduce написать, я такое не пробовал делать, сейчас IDE запускать лень. Если интересно, завтра напишу полный рабочий код.

Кстати это всё одной строчкой распараллеливается на много потоков, если у нас пользователей многие миллионы. И всё аккуратно посчитается, просуммируется, и вернёт один результат довольно эффективно.