Como calcular a soma da lista usando stream?

Robert:

Eu tenho um List<Integer>gosto { 1, 2, 3 ,4, 5 }, eu gostaria de obter o resultado como 12345.

Como fazer isso usando fluxos Java8 ou qualquer forma inteligente?

List consiste de inteiros não negativos único dígito.

Eu poderia definitivamente gosto 1*10000+ 2 * 1000 + 3*100 + 4*10 + 5, mas é bastante tedioso.

Andy Turner:

use IntStream.reduce:

int n = IntStream.of(array).reduce(0, (a,b) -> 10*a + b)

Esta é efetivamente o mesmo que:

int n = 0;
for (int b : array) {
  n = 10 * n + b;
}

Pessoalmente, eu iria optar por este último, na ausência de outras restrições, uma vez que é um código muito mais simples, não envolve o quadro fluxos relativamente pesado, mais fácil de depurar etc.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=224413&siteId=1
Recomendado
Clasificación