1

私は Java が初めてで、Java コレクションの実装の違いがわかりません。

インポートされたデータの最大 100K レコードを処理する必要があります。そのリストに重複がある可能性があります。それをすべてDBに入れなければなりません。インポートする前にデータベース テーブルをクリーンアップするので、最初は DB に重複がありません。

休止状態でデータを一括挿入しています。私はこのようなことをしたい:

SomeCollectionClass<Integer> alreadyInsertedRecords;
//...
if (!alreadyInsertedRecords.contains(currentRecord.hashCode()) {
    save_to_database(currentRecord);
    alreadyInsertedRecords.put(currentRecord.hashCode());
} else {
    logger.log("Record no 1234 is a duplicate, skipping");
}

レコードがデータベースに挿入されているかどうかを確認するには、どのコレクション クラスを使用すればよいですか?

前述したように、100,000 を超えるレコードが存在する可能性があるため、コレクションは検索と挿入が高速で、メモリ フットプリントが小さい必要があります。

4

4 に答える 4

2

HashSetで試すことができます。含まれるオブジェクトのクラスは、メソッド hashCode() および equals() を適切に実装する必要があることに注意してください。

于 2013-05-24T10:36:05.490 に答える
1

エントリがソート可能である場合、それらが有効でメソッドが実装されていれば、TreeSetすべての重複エントリを自動的に削除するコレクションを使用できます。compareTo()equals()

このまとめもprovides guaranteed log(n) time cost for the basic operations (add, remove and contains). 【参考】

hashCode()関数にアクセスできる場合は、 を使用できますHashSet。TreeSet と同様に機能し (挿入時に重複を削除)、高速になります。

これらの両方のコレクションの詳細については、 Colsult Hashset と Treesetの質問を参照してください。

可能であれば、使用してHashSetください。

于 2013-05-24T10:36:36.000 に答える