Я анализирую файл, в котором у меня есть названия городов и расстояния до других городов в этом формате:
"San Antonio"
"San Francisco"
Washington
"San Francisco"--Weed [305]
"San Francisco"--"Wisconsin Dells" [2189]
Washington--"San Jose" [2909]
Я думаю, что проблема в том, что когда я нарезаю строки, создаются разные объекты, и по какой-то причине String.equals и/или hashcode() дают разные результаты. Из-за этого Map.get(key) возвращает нулевые значения. Однако я не знаю, как это исправить.
public class spanning {
private static HashMap<String, HashMap<String, Integer>> map = new HashMap<String, HashMap<String, Integer>>();
public static void main(String[] args) throws IOException {
BufferedReader read = new BufferedReader(new FileReader(args[0]));
String temp;
while ((temp = read.readLine()) != null) {
if (temp.contains("[")) {
String[] parts = temp.split("--");
String[] parts2 = parts[1].split(" \\[");
Scanner scan;
scan = new Scanner(parts2[1]).useDelimiter("\\D");
int o = scan.nextInt();
map.get(parts[0]).put(parts2[0], o);
} else {
map.put(temp, new HashMap<String, Integer>());
}
}
System.out.println("Finished!");
}
}
String.equals()
будет сравнивать текст в случае строк. У вас есть пример того, что именно не удалось? - person achAmháin   schedule 01.05.2018parts[0]
и ключи с карты, существует ли в нейparts[0]
? - person achAmháin   schedule 01.05.2018temp
в хэш-карту в качестве ключа, а неparts[0]
- вы хотели это сделать? В этомelse
проверьте, как выглядитtemp
, прежде чем вставить его. - person David Lavender   schedule 01.05.2018temp
не содержит расстояния, он просто отображается на карте как Сан-Антонио или Вашингтон. Сейчас попробую то, что сказал @notyou. - person Slayahh   schedule 01.05.2018