gpt4 book ai didi

java - 检索 2 条记录的差异时未获得预期输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:48 26 4
gpt4 key购买 nike

问题

我的 file1 在一个文件中有 20,000 个数字,file2 在另一个文件中有 9997 个数字。我想要 file2 中不存在的数字,即那些 10,003 个数字

解决方案

我创建了 3 个 HashMap。

1)第一个HashMap存储第一个文件的记录,第二个HashMap存储第二个文件的记录,第三个HashMap存储文件记录的差异记录。

2)我应用了包含在 file1 中搜索 file2 记录的方法。如果 file1 记录不存在,我放入第三个 hashmap。

public class ReadFromFile {
static HashMap hm=null;
static HashMap hm1=null;
static HashMap hm2=null;

private static final String FILENAME = "/home/jalaj/Download/PrimaryBase";
private static final String FILENAME1 = "/home/jalaj/Downloads/logsBase";

public static void main(String[] args) {
hm2=new HashMap<>();
int count=0;
hm=readFromFile(FILENAME);

hm1=readFromFile(FILENAME1);
Set s=hm.keySet();
Iterator it=s.iterator();
while(it.hasNext()){
String me=(String)(it.next());
if(!(hm1.containsKey(me))){
hm2.put(me,0);
count++;
}
}
System.out.println(count);
}

public static HashMap readFromFile(String FILENAME){
int count=0;
hm=new HashMap();
BufferedReader br = null;
FileReader fr = null;

try {

fr = new FileReader(FILENAME);
br = new BufferedReader(fr);

String sCurrentLine;

br = new BufferedReader(new FileReader(FILENAME));

while ((sCurrentLine = br.readLine()) != null) {
hm.put(sCurrentLine, 0);
count++;
}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (br != null)
br.close();

if (fr != null)
fr.close();

} catch (IOException ex) {

ex.printStackTrace();

}

}
System.out.println(count);
return hm;
}

}

输出获取

20000

9997

0

预期输出

20000

9997

10,003

最佳答案

查看您的代码。在 readFromFile(String name) 中,您将 hm 属性重新声明为 hm= new HashMap() 并在初始化后返回它。这导致 hmhm1 具有相同的值,因此 hm2 存储没有差异。

将这一行 hm= new HashMap(); 更改为这一行 HashMap hm= new HashMap(); e volià。

PD:此外,您应该使用 size() 而不是计数变量,并按照 Michael Markidis 的建议使用 HashSet

编辑:在阅读迈克尔·马基迪斯的评论之前,我意识到了与迈克尔·马基迪斯相同的事情,迈克尔·马基迪斯真是太伟大了!

关于java - 检索 2 条记录的差异时未获得预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45101205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com