0
\$\begingroup\$

I wrote this code to check the even numbers from the List. After finding even number I twice the even numbers with the help of Map and then find the sum of each even number after making it double by use of the reduce method.

import java.util.Arrays;
import java.util.List;

public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);

System.out.println(
numbers.stream()
        .filter(e -> e % 2 == 0)
        .map( e -> e * 2)
        .reduce(0, Integer::sum));
}
\$\endgroup\$
1
  • \$\begingroup\$ Try to express the desired sum as formula of your N of the integer range and you don't need no Lambdas at all :) \$\endgroup\$ – RobAu Oct 20 '16 at 9:27
3
\$\begingroup\$

Have you come across the IntStream? I'd use that for numerical operations rather than the boxed version Stream<Integer>.

\$\endgroup\$
2
  • \$\begingroup\$ System.out.println(numbers.stream().filter(e -> e % 2 == 0).mapToInt( e -> e * 2).sum()); I change the map to mapToInt and remove that box Integer::sum to sum(). \$\endgroup\$ – user3789184 Oct 20 '16 at 5:39
  • 3
    \$\begingroup\$ Or one step further (assuming the List is not absolutely necessary): IntStream.rangeClosed(1, 9).filter(e -> e % 2 == 0).map(e -> e * 2).sum() \$\endgroup\$ – Joe C Oct 20 '16 at 5:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.