У меня есть файл с разными именами, например:
Thomas Danny
Jack Thomas
Danny Mike
Thomas Kate
Victor James
Редактировать: у меня между именами один пробел, поэтому он разделен правильно, это не проблема.
Каждая пара представляет, кто пригласил кого на вечеринку
Моя задача - докопаться до конца цикла через HashMap.
Например, когда в качестве аргумента приводится «Кейт», программа должна распечатать «Джек», потому что Томас пригласил Кейт, а Джек пригласил Томаса.
Пока мой код:
Map<String, String> whoInvited = new HashMap<>();
String[] pairs = text.split("\n");
for (String pair : pairs){
String[] invite = pair.split(" ");
whoInvited.put(invite[1], invite[0]);
}
System.out.println(whoInvited.size())
//Returns 5
System.out.println(whoInvited.get("Danny"));
//Returns null
System.out.println(whoInvited.get("James"));
//The only one that returns anything besides null(returns "Victor")
String lookingFor = "Kate";
while (whoInvited.containsKey(lookingFor)){
lookingFor = whoInvited.get(lookingFor);
}
System.out.println(lookingFor);
}
Я не понимаю, как HashMap запутался, как это. Если я использую функцию .get () внутри цикла for, он отлично дает мне значение, но сразу после окончания цикла он становится испорченным, имея только последнее значение.
Распечатка whoInvited дает мне просто "= Victor}"
РЕДАКТИРОВАТЬ: ИСПРАВЛЕНО!