Mám ArrayList<String>
a chcem z neho odstrániť opakujúce sa reťazce. Ako to môžem urobiť?
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<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
Tým sa samozrejme zničí poradie prvkov v zozname ArrayList
.
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<String> s = new LinkedHashSet<>(list);
Ak potom potrebujete získať späť odkaz na List
, môžete opäť použiť konštruktor konverzie.
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<String> s = new HashSet<String>(list);
Ak je to naozaj potrebné, môžete použiť rovnakú konštrukciu na prevod Set
späť na List
.