我有大量制表符分隔的文本数据,格式为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>
sNAME
吗?