Trim des 0 sur une liste de int
AmdalResu
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
AmdalResu Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
AmdalResu Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
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 déroulante en cascade - Guide
- Liste code ascii - Guide
- Numéro de téléphone excel 0 - Guide
- Liste de diffusion whatsapp - 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
Date d'inscription
Statut
Membre
Dernière intervention
Merci pour ta réponse.