データの読み取り中にハッシュマップまたはハッシュセットがあります。ID が hasmap/hashset に存在するかどうかを確認し、存在する場合は続行します。それ以外の場合は、セット/マップに入力して挿入します。
余談:
hashmap と hashset の違いは、hashset は値のみを受け取り、hashmap はキー値を取ることです。ただし、Hashset 自体はメモリ内のハッシュマップを使用し、値のダミー オブジェクトを挿入するだけです。
参照: HashMap と Hashtable の違いは?
ハッシュセットの例:
HashSet<Integer> distinctIds = new HashSet<Integer>();
MyRowData rowdata;
int rowID;
while((rowdata = this.getRowData())!=null ) // or however you iterate over the rows using reader etc
{
rowID = rowdata.getRowID();
if(!distinctIds.contains(new Integer(rowID)))
{
distinctIds.add(rowID);
inertDataInMysql(rowdata); //however you insert your data here
System.out.println("Adding " + rowID);
}
}
バッチ挿入を使用して、多数の行に対して可換挿入を実行することにより、コードをさらに高速化できます。見る: