Ako odstránim opakujúce sa prvky zo zoznamu ArrayList?

Mám ArrayList<String> a chcem z neho odstrániť opakujúce sa reťazce. Ako to môžem urobiť?

Riešenie

Ak nechcete, aby sa v kolekcii Collection vyskytovali duplikáty, mali by ste zvážiť, prečo používate kolekciu Collection, ktorá duplikáty umožňuje. Najjednoduchší spôsob, ako odstrániť opakujúce sa prvky, je pridať obsah do Set (ktorý duplicity nepovoľuje) a potom pridať Set späť do ArrayList:

Set set = new HashSet(yourList);
yourList.clear();
yourList.addAll(set);

Tým sa samozrejme zničí poradie prvkov v zozname ArrayList.

Komentáre (16)

Hoci prevod zoznamu ArrayList na súbor HashSet účinne odstraňuje duplikáty, ak potrebujete zachovať poradie vkladania, radšej by som vám odporučil použiť tento variant

// list is some List of Strings
Set s = new LinkedHashSet(list);

Ak potom potrebujete získať späť odkaz na List, môžete opäť použiť konštruktor konverzie.

Komentáre (5)

Ak nechcete duplicitné položky, použite namiesto Soznamu Set. Na konverziu Listu na Set môžete použiť nasledujúci kód:

// list is some List of Strings
Set s = new HashSet(list);

Ak je to naozaj potrebné, môžete použiť rovnakú konštrukciu na prevod Set späť na List.

Komentáre (2)