Rimuovere tutte le occorrenze di un elemento da ArrayList

Sto usando java.util.ArrayList, voglio rimuovere tutte le occorrenze di un elemento in particolare.

    List<String> l = new ArrayList<String>();
    l.add("first");
    l.add("first");
    l.add("second");

    l.remove("first");

Per rimuovere solo la prima occorrenza. Ma io voglio che tutte le occorrenze per essere rimosso dopo l.remove("first"); mi aspetto elenco di essere lasciato solo con il valore di “seconda”. Ho trovato facendo ricerche su google che può essere raggiunto attraverso la creazione di nuove elenco e chiamando list.removeAll(newList). Ma è possibile rimuovere tutte le occorrenze senza creare un nuovo elenco o c’è qualche API disponibili per realizzarla ?

InformationsquelleAutor Mojoy | 2012-11-26

 

5 Replies
  1. 121
    l.removeAll(Collections.singleton("first"));
    • o l.removeAll(Collections.singletonList("first")); essere più esplicito.
  2. 22
    while(l.remove("first")) { }

    Questo rimuove tutti gli elementi “prima” dalla lista.

    • List.remove() restituisce il valore booleano.
    • restituisce un valore booleano e allo stesso tempo rimuove il valore. docs.oracle.com/javase/6/docs/api/java/util/…
    • Sì è vero, ma non è possibile confrontare il valore restituito booleano con null. È sufficiente rimuovere la parte successiva nel ciclo while.
    • Mi sono confuso con il remove(int index) sovraccarico. Io modificare la risposta.
    • Bella risposta!!! +1.
  3. 1

    Dal momento che nel tuo esempio si utilizza Stringhe credo che non dovrebbe fare il trucco.

    for(int i = 0; i < list.size();i++){
        if(list.get(i).equals(someStringNameOrValue)){
            list.remove(i--);
        }
    }

    Guarda come ho frainteso la tua domanda. Ho aggiornato la mia risposta. Sono di destra? si desidera rimuovere tutte le occorrenze di “prima” ?

    • La tua precedente risposta è corretta.
    • Sarà necessario rimuovere dalla fine di evitare di saltare degli elementi o list.remove(i--);
    • Oh, vedo corretto.

Lascia un commento