あなたは問題を考えすぎています、これはすべてをメモリに保持する代わりにディスクにデータを保存する1つのMySQLテーブルで非常に簡単に行うことができます。これだけのデータは、スタンドアロンアプリケーションで効率的に処理されることを意図したものではありませんでした。
CREATE TABLE TONS_OF_STRINGS
(
unique_string varchar(255) NOT NULL,
UNIQUE (unique_string)
)
値をループして(ここではコンマ区切りのリストを想定)、各トークンを挿入してみてください。失敗した各トークンは重複しています。
public static void main(args) {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/database","username","password");
FileReader file = new FileReader("SomeGiantFile.csv");
Scanner scan = new Scanner(file);
scan.useDelimiter(",");
String token;
while ( scan.hasNext() ) {
token = scan.next();
try {
PreparedStatement ps = con.prepareStatement("Insert into TONS_OF_STRING (UNIQUE_STRING) values (?)");
ps.setString(1, token);
ps.executeUpdate();
} catch (SQLException e) {
System.out.println("Found duplicate: " + token );
}
}
con.close();
System.out.println("Well that was easy, I'm all done!");
return 0;
}
ただし、完了したらテーブルをクリアすることを忘れないでください。これには大量のデータが含まれます。