Анализирам от файл, където имам имена на градове и разстояния до други градове в този формат:
"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
в hashmap като ключ, а неparts[0]
- това ли искахте да направите? В товаelse
- проверете как изглеждаtemp
точно преди да го поставите - person David Lavender   schedule 01.05.2018temp
не съдържа разстояние, то просто се поставя на картата като Сан Антонио или Вашингтон. Ще опитам това, което @notyou каза сега. - person Slayahh   schedule 01.05.2018