我需要在Java中比较实例"File"的两个不同文件,并希望使用快速哈希函数来执行此操作.
想法: - 散列文件1中的20个第一行 - 散列文件2中的20个第一行 - 比较两个散列并返回true(如果它们相等).
我想使用Java中实现的"最快"哈希函数.你会选哪一个?
我想从一个巨大的文本文件(超过600 000 MB)打印每一行.
但是当我尝试下面的代码时,我会在到达第1 000 000行之前得到"... OutOfMemoryError:Java堆空间".
有没有更好的方法来处理输入而不是FileReader和LineNumberReader?
FileReader fReader = new FileReader(new File("C:/huge_file.txt"));
LineNumberReader lnReader = new LineNumberReader(fReader);
String line = "";
while ((line = lnReader.readLine()) != null) {
System.out.println(lnReader.getLineNumber() + ": " + line);
}
fReader.close();
lnReader.close();
Run Code Online (Sandbox Code Playgroud)
提前致谢!
谢谢大家的回答!
我终于找到了内存泄漏,一个未使用的java类实例,它为每次迭代重复了一次.换句话说,它与文件加载部分无关.
我想使用正则表达式从java中的字符串中捕获日期和其他一些信息.
我将我的模式分组如下,
"( ( date_variation_1 | date_variation_2) (some_other_info) ) "
Run Code Online (Sandbox Code Playgroud)
现在,我想提取匹配的字符串,如下所示,
group0 - 整个匹配组1
- 日期
组2 - 其他一些信息
我的问题是我需要在date_variation_1,date_variation_2和some_other_info内部使用括号,这些括号也将被视为组分隔符.
有没有任何简单的解决方法,即将一些其他特殊章程定义为外部组分隔符,而不是括号?
date_variation_1:
"(((?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|Tues|Thur|Thurs|Sun|Mon|Tue|Wed|Thu|Fri|Sat))" // Day Of Week 1
+ "(\\s+)" // White Space 1
+ "((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:\\d{1}\\d{1})))(?![\\d])" // MMDDYY 1
+ "(\\s+)" // White Space 2
+ "((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?))"; // HourMinuteSec 1
Run Code Online (Sandbox Code Playgroud)