の形式でタブ区切りのテキストデータの大規模なコレクションがありますDATE NAME MESSAGE
。つまり、1.76GBのコレクションを1075個の実際のファイルに分割したということです。すべてのファイルNAME
からデータを取得する必要があります。今まで私はこれを持っています:
File f = new File(directory);
File files[] = f.listFiles();
// HashSet<String> all = new HashSet<String>();
ArrayList<String> userCount = new ArrayList<String>();
for (File file : files) {
if (file.getName().endsWith(".txt")) {
System.out.println(file.getName());
BufferedReader in;
try {
in = new BufferedReader(new FileReader(file));
String str;
while ((str = in.readLine()) != null) {
// if (all.add(str)) {
userCount.add(str.split("\t")[1]);
// }
// if (all.size() > 500)
// all.clear();
}
in.close();
} catch (IOException e) {
System.err.println("Something went wrong: "
+ e.getMessage());
}
}
}
私のプログラムは、-Xmx1700を使用しても、常にメモリ不足の例外を出します。それを超えることはできません。とにかく、コードを最適化してのを処理できるようにすることはできArrayList<String>
ますNAME
か?