-5
votes

Supprimer les derniers éléments d'une liste s'ils correspondent à un modèle

donné une liste de chaînes numériques [1,3,5,0,2,0,0,0] . Existe-t-il un moyen de supprimer le dernier 0, pour obtenir [1,3,5,0,2] , si possible à l'aide de flux.


4 commentaires

Vous voulez dire un numéro de double?


Je veux juste supprimer les trois derniers 0 sans supprimer le 0 qui ne sont pas à la fin de la liste.


Ceci est juste un exemple, cela pourrait être un nombre différent de 0 à la fin.


... Et qu'avez-vous essayé jusqu'à présent?


3 Réponses :


1
votes

Si vous êtes sur Java9 au moins:

List<String> inputList = ...
Predicate<String> predicate = ...

List<String> result = new ArrayList<>(inputList);
Colledtions.reverse(result);
result = result.stream
    .dropWhile(predicate)
    .collect(toList());


2 commentaires

Merci, les interessessants mais je gère Java8 seulement et je ne peux pas utiliser de baisse. Quoi qu'il en soit, vous avez raison, le mécanisme inversé pourrait être utile ici.


Ou vous pouvez même créer une drique de l'entrée et de la pop () pendant que vos chaînes correspondent



2
votes

Je ne vois aucune raison pour laquelle vous devriez utiliser des flux dans ce cas. L'extrait suivant est court et simple. Je vous recommanderais de cette façon.

    String[] stringarray = { "1", "3", "5", "0", "2", "0", "0", "0" };

    List<String> strings = new ArrayList<>(Arrays.asList(stringarray));

    while (strings.get(strings.size() - 1).equals("0")) {
        strings.remove(strings.size() - 1);
    }


1 commentaires

int compte = 2; tandis que (strings.get (strings.size () - 1) .equals ("0") && comptez> = 0) {comptent--; strings.remove (cordes.Size () - 1); } car ne fonctionne pas pour {"1", "3", "5", "0", "2", "0", "0", "0", "0"} < / code>



0
votes

une solution simple xxx


0 commentaires