Java HashMap,get(key)方法不起作用

时间:2014-06-05 18:07:40

标签: java collections hashmap

我正在尝试创建一个在Java中使用PhoneBook的{​​{1}}类。当我在HashMap中使用put()方法添加条目时,它可以正常工作,但是当我尝试在addContact()方法中检索值时,不会返回任何值。我没有得到空值; searchContact()肯定包含我要搜索的密钥,但不会返回与密钥相关联的值。提前谢谢。

这是我的代码:

HashMap

3 个答案:

答案 0 :(得分:3)

您的if语句正在检查电话簿是否有name作为值,因此您的获取从未到达。

试试这个:

if (contactMap.containsKey(name))
            return contactMap.get(name);    

答案 1 :(得分:1)

正如另一个答案所指出的,你应该检查containsKey,因为name是一个关键,而不是一个值。但为什么不让整个事情变得更容易:

public List<String> searchContact(String name) throws NoDataFoundException {
    List<String> result = contactMap.get(name);
    if (result == null) { 
        // empty map, or no matching value or value is null
        throw new NoDataFoundException();
    }
}

答案 2 :(得分:0)

你在做:

if (contactMap.containsValue(name))
     return contactMap.get(name);   

你需要这样做:

if (contactMap.containsKey(name))
     return contactMap.get(name);