Java 8 - Разница между уменьшением (0, Integer :: sum) и уменьшением (0, (a, b) -> a + b) - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в Java 8 и нашел несколько способов сделать addition, multiply и subtraction.Я буду публиковать вопрос только для добавления.

Я написал код ниже и собираю вывод в Sum1 и Sum2.Оба метода reduce(0, Integer::sum) и .reduce(0, (a, b) -> a+b); дают одинаковый результат.Каков наилучший метод для повышения производительности, если используются большие целочисленные значения и почему?

List<Integer> numbers = Arrays.asList(1, 2, 1, 3, 3, 2, 4);

Integer sum1 = numbers.stream().reduce(0, (a, b) -> a+b);
System.out.println("SUM ="+sum1);

Integer product = numbers.stream().reduce(0, (a, b) -> a*b);
System.out.println("PRODUCT = "+product);

int sum2 = numbers.stream().reduce(0, Integer::sum);
System.out.println("SUM 2= "+sum2);

Optional<Integer> sum3 = numbers.stream().reduce((a, b) -> (a + b));
System.out.println("SUM3="+sum3);

// Updated as per  @Hadi J comment
int sum4 = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println("Sum ="+sum4);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...