Я пишу программу, которая читает строки из файла.
Используется HashMap<String,Class>
. Например, используемый ключ "inboundtcp".
При чтении первой строки из буферизованного чтения, hasKmap (ключ) hashmap возвращает false, и добавляется новая запись, очевидный случай. Однако, если есть другая строка с ключом "inboundtcp", содержит ключ (ключ), возвращает false.
Я установил точку останова и увидел, что hashCode отличается. Он добавляется как новая запись. Для всех других последующих чтений, после второго чтения, из файла containsKey (ключ) возвращает 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 (), но почему это происходит?