从包含逐行数据的平面文件中,我的任务是验证来自 DB 的数据不存在 我正在尝试验证 首先使用 Java 我已将平面文件数据插入 HashSet1 和另一个 Hashset2 对于 DB 数据,之后我试图检查 Hashset1 .Contain(Hashset2) 以便我可以识别数据库中不存在哪些数据。
下面给出了虚拟代码,您可以假设 hashset1(这是一些缺失的数据)作为文件读取器数据,hashset2(来自 db 的完整数据)作为数据库数据
但是正如我在这里提到的,我有 3000 万个数据需要验证,我可以通过这种方式验证 100 万个数据,但无法验证 3000 万个数据,这是我的任务。有没有最好的方法来做这个好心的建议和某种代码,我们将非常感激。
public class App
{
public static void sampleMethod() {
Set<Integer> hashset1 = new HashSet<Integer>();
Set<Integer> hashset2 = new HashSet<Integer>();
for(int i = 0; i<30000000; i++ ) {
if(i %50000 != 0) {
hashset1.add(i);
}
}
int count = 0;
for(int j =0;j<30000000;j++) {
if(hashset1.contains(j)) {
count++;
} else {
System.out.println(j+" Is Not Present");
hashset2.add(j);
}
}
System.out.println("Contain Value Count" + count);
}
public static void main( String[] args )
{
sampleMethod();
}
}
错误堆栈跟踪:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:703)
at java.util.HashMap.putVal(HashMap.java:662)
at java.util.HashMap.put(HashMap.java:611)
at java.util.HashSet.add(HashSet.java:219)
at com.java.anz.BankingPro.App.sampleMethod(App.java:20)
at com.java.anz.BankingPro.App.main(App.java:38)