Robert:
J'ai un List<Integer>
comme { 1, 2, 3 ,4, 5 }
, je voudrais obtenir le résultat comme 12345
.
Comment faire en utilisant les flux Java8 ou une façon intelligente?
List
se compose d'un seul chiffre des nombres entiers non négatifs.
Je pourrais certainement faire comme 1*10000+ 2 * 1000 + 3*100 + 4*10 + 5
, mais il est assez fastidieux.
Andy Turner:
Utilisez IntStream.reduce
:
int n = IntStream.of(array).reduce(0, (a,b) -> 10*a + b)
Ceci est effectivement le même que:
int n = 0;
for (int b : array) {
n = 10 * n + b;
}
Personnellement, j'opte pour cette dernière en l'absence d'autres contraintes, car il est un code beaucoup plus simple, ne concerne pas le cadre de cours d'eau relativement lourds, plus facile à déboguer etc.