ArrayListから繰り返される要素を削除するには?

ArrayList`があるのですが、そこから繰り返される文字列を削除したいのです。どのようにすればよいでしょうか?

ソリューション

もしCollectionの中に重複を入れたくないのであれば、なぜ重複を許すCollectionを使っているのかを考えるべきです。繰り返される要素を削除する最も簡単な方法は、その内容を Set (重複を許さない) に追加してから、SetArrayList に戻すことです。

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)

重複したくない場合は、Listではなく、Setを使用してください。ListSet`に変換するには、次のようなコードを使います。

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

本当に必要であれば、同じ構造を使ってSetListに戻すことができます。

解説 (2)