Как да премахна повтарящи се елементи от ArrayList?

Имам списък ArrayList<String> и искам да премахна повтарящи се низове от него. Как мога да направя това?

Решение

Ако не искате да има дубликати в дадена Колекция, трябва да помислите защо използвате Колекция, която позволява дубликати. Най-лесният начин за премахване на повтарящи се елементи е да добавите съдържанието в Set (което не позволява дублиране) и след това да добавите Set обратно в ArrayList:

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

Разбира се, това разрушава подредбата на елементите в ArrayList.

Коментари (16)

Въпреки че преобразуването на ArrayList в HashSet ефективно премахва дубликатите, ако трябва да запазите реда на вмъкване, по-скоро бих ви предложил да използвате този вариант

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

След това, ако трябва да получите обратно референция към List, можете отново да използвате конструктора за преобразуване.

Коментари (5)

Ако не искате да има дубликати, използвайте Set вместо List. За да преобразувате List в Set, можете да използвате следния код:

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

Ако наистина е необходимо, можете да използвате същата конструкция, за да превърнете Set обратно в List.

Коментари (2)