Программа выведет неверный ключ и значение на основе оператора If.Может кто-нибудь объяснить, почему?
Например, Ключ = Дядя Том + Значение = 02086542222 Ключ = Гарри + Значение = 020826262
Запрос = Дядя Том
Возвращает = Ключ = Гарри + Значение= 00826262
Цитата из приведенной ниже документации гласит:
"Более формально, возвращает true, если и только если эта карта содержит отображение для ключа k такое, что (key == null? K == null: key.equals (k)) "
Так что у меня сложилось впечатление, что if (Contacts.containsKey (query)) будет сравнивать входной запрос с ключом, используя key.equals (k)
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
public class HRHashMap {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
Map<String, Integer> Contacts = new HashMap<String, Integer>();//Specify HashMap of type String
int numOfContacts = scan.nextInt();
scan.nextLine();
//Add contacts
for (int i = 0; i < numOfContacts; i++) {
String contactName = scan.nextLine();
int contactNumber = scan.nextInt();
scan.nextLine();
Contacts.put(contactName, contactNumber);
}
//Iterate over the Map
for (Entry<String, Integer> entry : Contacts.entrySet()) {
String query = scan.nextLine();
if (Contacts.containsKey(query)) {
//System.out.println(Contacts.get(query));
System.out.println(entry.getKey() + "=" + entry.getValue());
} else {
System.out.println("Not found");
}
}
}
}