gpt4 book ai didi

java - HashMap containsKey() 查询的输出未返回正确的值

转载 作者:行者123 更新时间:2023-12-02 01:41:39 26 4
gpt4 key购买 nike

程序将根据If语句打印不正确的键和值。有人能解释一下为什么吗?

例如键 = 汤姆叔叔 + 值 = 02086542222 键 = Harry + 值 = 020826262

查询=汤姆叔叔

返回 = 键 = Harry + 值 = 00826262

引用以下文档:

“更正式地说,当且仅当此映射包含键 k 的映射且满足 (key==null ? k==null : key.equals(k)) 时才返回 true”

所以我的印象是 if(Contacts.containsKey(query)) 会使用 key.equals(k) 将输入查询与 key 进行比较

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");
}
}

}
}

最佳答案

您的程序会迭代映射中的每个条目,为每个条目请求一些输入(query),然后检查 query 是否是映射中的键,如果它打印当前访问的条目(与查询完全无关)。

因此输出看起来“正确”: map 确实包含“Uncle Tom”,因此它继续打印第一个条目(“Harry”)。请注意,“第一个”在 HashMap 中是一个模糊的概念,条目的迭代顺序是未指定的。

我不太明白为什么你循环遍历所有条目,但是你注释掉的行(打印与 query 匹配的条目)可能会更好:

System.out.println(Contacts.get(query));

关于java - HashMap containsKey() 查询的输出未返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54387614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com