web-dev-qa-db-ja.com

ArrayListに一意の文字列のリストを保存します

テキストファイルからデータを読み取るので、次のようになります。

ジョン
メアリー
ジョン
リーズ

上記のように、ファイル出力には3つの一意の値しかないため、ArrayListで3つの一意の要素を取得する必要があります。

HashTableを使用して情報を追加し、そのデータをリストにコピーするだけです。他の解決策はありますか?

36
EugeneP

なぜListに保存する必要があるのですか?実際にデータを注文する必要があるか、インデックスベースのルックアップをサポートしていますか?

Setにデータを保存することをお勧めします。順序が重要でない場合は、HashSetを使用する必要があります。ただし、順序を保持する場合は、LinkedHashSetを使用できます。

75
Adamski

重複を含むListがあり、なしでListが必要な場合は、次のようにします。

List<String> newList = new ArrayList<String>(new HashSet<String>(oldList));

つまり、古いリストをセットにラップして重複を削除し、そのセットを再度リストにラップします。

66
Fabian Steeg

追加する前に list.contains() を確認できます。

if(!list.contains(value)) {
    list.add(value);
}

それは明らかだと思いました!ただし、HashSetにアイテムを追加してから、このセットからリストを作成する方が効率的です。

17
Chandra Sekar

リストの代わりにsetを使用します。こちらをご覧ください: Java Collections Tutorials そして、ここのセットについては特に: Java Sets Tutorial

要するに、セットには何かの1つが含まれています。完璧:)

4
Tom Duckering

ここに私がそれを解決した方法があります:

import groovy.io.*;
def arr = ["5", "5", "7", "6", "7", "8", "0"]
List<String> uniqueList = new ArrayList<String>(new HashSet<String>( arr.asList() ));
System.out.println( uniqueList )
2
djangofan