Trim des 0 sur une liste de int
AmdalResu
Messages postés
4
Statut
Membre
-
AmdalResu Messages postés 4 Statut Membre -
AmdalResu Messages postés 4 Statut Membre -
Bonjour à tous,
J'ai une question sur la manière de faire une suppression des chiffres 0 situés au début et la fin d'une liste d'entier. Par exemple la liste : 0, 0, 0, 5, 10, 0, 15, 0, 0
Le nombre de 0 est complètement aléatoire. Il y a bien des solutions avec des boucles et des instructions if mais ce que je cherche c'est une manière élégante de le faire avec des streams par exemple. J'ai essayé mais je n'ai pas réussi car mes connaissance en streams sont limitées.
Si vous avez une solution, je suis intéressé de la connaître !
Merci par avance.
J'ai une question sur la manière de faire une suppression des chiffres 0 situés au début et la fin d'une liste d'entier. Par exemple la liste : 0, 0, 0, 5, 10, 0, 15, 0, 0
Le nombre de 0 est complètement aléatoire. Il y a bien des solutions avec des boucles et des instructions if mais ce que je cherche c'est une manière élégante de le faire avec des streams par exemple. J'ai essayé mais je n'ai pas réussi car mes connaissance en streams sont limitées.
Si vous avez une solution, je suis intéressé de la connaître !
Merci par avance.
A voir également:
- Trim des 0 sur une liste de int
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Liste des appareils connectés - Guide
- Numéro de téléphone excel 0 - Guide
1 réponse
Bonjour,
Les stream sont là pour permettre une implémentation simple de traitements "complexes", mais il ne faut pas systématiquement faire du stream partout. Ici ton besoin est simple et le stream serait plus complexe qu'une implémentation basique avec une boucle for, donc il vaut mieux privilégier la simplicité.
Exemple :
Les stream sont là pour permettre une implémentation simple de traitements "complexes", mais il ne faut pas systématiquement faire du stream partout. Ici ton besoin est simple et le stream serait plus complexe qu'une implémentation basique avec une boucle for, donc il vaut mieux privilégier la simplicité.
Exemple :
public static <E> List<E> trim(List<E> list, E toAvoid) {
int sz = list.size(), part2 = 0, part3 = sz, part = 1;
for (int i = 0; i < sz; i++) {
if (Objects.equals(list.get(i), toAvoid)) {
if (part == 2) {
part3 = i;
part = 3;
}
} else {
if (part == 1) {
part2 = i;
part = 2;
} else if (part == 3) {
part3 = sz;
part = 2;
}
}
}
return list.subList(part2, part3);
}
System.out.println(trim(Arrays.asList(0, 0, 0, 5, 10, 0, 15, 0, 0), 0)); // [5, 10, 0, 15]
AmdalResu
Messages postés
4
Statut
Membre
Merci pour ta réponse.