\$\begingroup\$
\$\endgroup\$
1
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));
}
Jamal
35.2k13 gold badges134 silver badges238 bronze badges
asked Oct 20, 2016 at 5:31
-
\$\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\$Rob Audenaerde– Rob Audenaerde2016年10月20日 09:27:29 +00:00Commented Oct 20, 2016 at 9:27
1 Answer 1
\$\begingroup\$
\$\endgroup\$
2
Have you come across the IntStream
? I'd use that for numerical operations rather than the boxed version Stream<Integer>
.
-
\$\begingroup\$
System.out.println(numbers.stream().filter(e -> e % 2 == 0).mapToInt( e -> e * 2).sum());
I change themap
tomapToInt
and remove that boxInteger::sum
tosum()
. \$\endgroup\$user3789184– user37891842016年10月20日 05:39:28 +00:00Commented Oct 20, 2016 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– Joe C2016年10月20日 05:47:50 +00:00Commented Oct 20, 2016 at 5:47
lang-java