Como faço para remover elementos repetidos do ArrayList?

Tenho uma 'ArrayList`, e quero remover cordas repetidas dela. Como eu posso fazer isso?

Solução

Se você não'não quer duplicatas em uma 'Coleção', você deve considerar porque você'está utilizando uma 'Coleção' que permite duplicatas. A maneira mais fácil de remover elementos repetidos é adicionar o conteúdo a um Set (que não permitirá duplicatas) e então adicionar o Set de volta à ArrayList:

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

É claro que isto destrói a ordenação dos elementos da "ArrayList".

Comentários (16)

Embora a conversão da ArrayList em um HashSet remova efetivamente as duplicatas, se você precisar preservar a ordem de inserção, I'prefiro sugerir que você utilize esta variante

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

Então, se você precisar recuperar uma referência Lista, você pode utilizar novamente o construtor de conversão.

Comentários (5)

Se você não'não quer duplicatas, utilize um Set em vez de uma Lista. Para converter uma Lista para um Set você pode utilizar o seguinte código:

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

Se realmente necessário, você pode utilizar a mesma construção para converter um "Conjunto" de volta em uma "Lista".

Comentários (2)