Имам списък ArrayList<String>
и искам да премахна повтарящи се низове от него. Как мога да направя това?
Ако не искате да има дубликати в дадена Колекция
, трябва да помислите защо използвате Колекция
, която позволява дубликати. Най-лесният начин за премахване на повтарящи се елементи е да добавите съдържанието в Set
(което не позволява дублиране) и след това да добавите Set
обратно в ArrayList
:
Set<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
Разбира се, това разрушава подредбата на елементите в ArrayList
.
Въпреки че преобразуването на ArrayList
в HashSet
ефективно премахва дубликатите, ако трябва да запазите реда на вмъкване, по-скоро бих ви предложил да използвате този вариант
// list is some List of Strings
Set<String> s = new LinkedHashSet<>(list);
След това, ако трябва да получите обратно референция към List
, можете отново да използвате конструктора за преобразуване.
Ако не искате да има дубликати, използвайте Set вместо List
. За да преобразувате List
в Set
, можете да използвате следния код:
// list is some List of Strings
Set<String> s = new HashSet<String>(list);
Ако наистина е необходимо, можете да използвате същата конструкция, за да превърнете Set
обратно в List
.