Calcule la suma de todos los elementos en una Lista en Java
Esta publicación discutirá cómo calcular la suma de todos los elementos en una Lista en Java.
1. IntStream sum()
método
Una solución sencilla para calcular la suma de todos los elementos de una Lista es convertirla en IntStream
y llama sum()
para obtener la suma de los elementos en la corriente. Hay varias formas de conseguir IntStream
de Stream<Integer>
usando mapToInt()
método.
1. Using method reference Integer::intValue
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int sum = nums.stream().mapToInt(Integer::intValue).sum(); System.out.println(sum); // 15 } } |
2. Using method reference Integer::valueOf
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int sum = nums.stream().mapToInt(Integer::valueOf).sum(); System.out.println(sum); // 15 } } |
3. Using Lambda expression i -> i
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int sum = nums.stream().mapToInt(i -> i).sum(); System.out.println(sum); // 15 } } |
2. Reducir la operación
Otra solución es realizar la operación de reducción para realizar la suma.
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int sum = nums.stream().reduce((x, y) -> x + y).get(); System.out.println(sum); // 15 } } |
Podemos simplificar el código anterior usando la referencia del método Integer::sum
, Como se muestra abajo:
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int sum = nums.stream().reduce(Integer::sum).get(); System.out.println(sum); // 15 } } |
El código se puede simplificar aún más eliminando Optional
:
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int sum = nums.stream().reduce(0, Integer::sum); System.out.println(sum); // 15 } } |
3. Usando IntSummaryStatistics
Finalmente, podemos obtener IntSummaryStatistics
instancia de IntStream
, que tiene getSum()
método para obtener la suma de los valores en él.
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); long sum = nums.stream().mapToInt(Integer::valueOf).summaryStatistics().getSum(); System.out.println(sum); // 15 } } |
4. Solución ingenua
Incluso podemos escribir una rutina personalizada para calcular la suma de todos los elementos en una Lista usando un bucle for, como se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.Arrays; import java.util.List; class Main { public static int getSum(List<Integer> nums) { int sum = 0; for (int i: nums) { sum += i; } return sum; } public static void main(String[] args) { List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int sum = getSum(nums); System.out.println(sum); // 15 } } |
Se trata de calcular la suma de todos los elementos en una Lista en Java.