Jeg har en ArrayList<String>
, og jeg vil fjerne gjentatte strenger fra den. Hvordan kan jeg gjøre dette?
Hvis du ikke vil ha duplikater i en Collection
, bør du vurdere hvorfor du bruker en Collection
som tillater duplikater. Den enkleste måten å fjerne gjentatte elementer på er å legge innholdet til et Set
(som ikke tillater duplikater) og deretter legge Set
tilbake til ArrayList
:
Set<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
Dette ødelegger selvfølgelig rekkefølgen på elementene i ArrayList
.
Selv om konvertering av ArrayList
til en HashSet
effektivt fjerner duplikater, vil jeg heller foreslå at du bruker denne varianten hvis du trenger å bevare innsettingsrekkefølgen.
// list is some List of Strings
Set<String> s = new LinkedHashSet<>(list);
Deretter, hvis du trenger å få tilbake en List
-referanse, kan du bruke konverteringskonstruktøren igjen.
Hvis du ikke vil ha duplikater, kan du bruke et Set i stedet for en List
. For å konvertere en List
til en Set
kan du bruke følgende kode:
// list is some List of Strings
Set<String> s = new HashSet<String>(list);
Hvis det virkelig er nødvendig, kan du bruke samme konstruksjon for å konvertere en Set
tilbake til en List
.