Man ir ArrayList<String>
, un es gribu no tā izņemt atkārtotas virknes. Kā es varu to izdarīt?
Ja nevēlaties, lai kolekcijā
būtu dublikāti, jums jāapsver, kāpēc izmantojat kolekciju
, kas pieļauj dublikātus. Visvienkāršākais veids, kā noņemt atkārtojošos elementus, ir pievienot saturu Set
(kas nepieļauj dublikātus) un pēc tam pievienot Set
atpakaļ ArrayList
:
Set<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
Protams, tas izjauc elementu secību ArrayList
.
Lai gan ArrayList
pārveidošana par HashSet
efektīvi novērš dublēšanos, ja jums ir nepieciešams saglabāt ievietošanas kārtību, es drīzāk ieteiktu izmantot šo variantu.
// list is some List of Strings
Set<String> s = new LinkedHashSet<>(list);
Tad, ja jums ir nepieciešams atgūt List
atsauci, varat atkal izmantot konversijas konstruktoru.
Ja nevēlaties dublēties, izmantojiet Set, nevis List
. Lai pārvērstu List
par Set
, varat izmantot šādu kodu:
// list is some List of Strings
Set<String> s = new HashSet<String>(list);
Ja patiešām nepieciešams, varat izmantot to pašu konstrukciju, lai pārvērstu Set
atpakaļ par List
.