プログラムは、If ステートメントに基づいて誤ったキーと値を出力します。誰かが理由を説明できますか?
例 キー = アンクルトム + 値 = 02086542222 キー = ハリー + 値 = 020826262
クエリ=アンクルトム
戻り値 = キー = ハリー + 値 = 00826262
以下のドキュメントの状態からの引用:
「より正式には、このマップに (key==null ? k==null : key.equals(k)) のようなキー k のマッピングが含まれている場合にのみ、true を返します」
そのため、 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");
}
}
}
}