gpt4 book ai didi

java - 尽管 key 存在并且相同,为什么 containsKey(String) 在我的程序中返回 false?

转载 作者:行者123 更新时间:2023-12-01 18:34:16 26 4
gpt4 key购买 nike

我正在编写一个从文件中读取行的程序。
HashMap<String,Class>正在使用中。例如,使用的 key 是“inboundtcp”。
当从缓冲读取器读取第一行时,hashmap 的 containsKey(key) 返回 false 并添加一个新条目,这是明显的情况。但是,如果还有另一行带有键“inboundtcp”,则 containskey(key) 返回 false。
我放置了一个断点,发现 hashCode 不同。它被添加为新条目。对于所有其他后续读取,在第二次读取之后,从文件中 containsKey(key) 返回 true

 BufferedReader br = new BufferedReader(new FileReader(filePath));
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(",");
String trafficDirection=fields[0].trim();
String trafficProtocol=fields[1].trim();
String portValue=fields[2];
String ipAddressValue=fields[3].trim();
String key=trafficDirection+trafficProtocol;
if(rulesMap.containsKey(key)){
PortsAndIP result=insertPortAndIPAddress(portValue,ipAddressValue);
ArrayList<PortsAndIP> existingData= (ArrayList<PortsAndIP>) rulesMap.get(trafficDirection+trafficProtocol);
existingData.add(result);
rulesMap.put(new String(trafficDirection+trafficProtocol),existingData);
}
else {
ArrayList<PortsAndIP> data= new ArrayList<PortsAndIP>();
PortsAndIP result=insertPortAndIPAddress(portValue,ipAddressValue);
if(result!=null) {
data.add(result);
rulesMap.put(new String(trafficDirection+trafficProtocol),data);
}
}
}


我引用了所有相关帖子,但无法找到解决方案。 String类已经实现了hashCode()和equals()方法,但是为什么会出现这种情况呢?

最佳答案

问题是我的 csv 是 utf-8 字节 .csv 格式。当我在 MS-Excel 中更改为 .csv 格式时, HashMap 能够为键返回 true。

关于java - 尽管 key 存在并且相同,为什么 containsKey(String) 在我的程序中返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60091392/

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