首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当值存在时,Java hashMap .getValue()返回false

当值存在时,Java hashMap .getValue()返回false
EN

Stack Overflow用户
提问于 2018-10-29 07:16:10
回答 1查看 114关注 0票数 -1

当.getValue()调用条目“雅各布”时,当值在那里时,我得到了一个false。

位于倒数第三行的错误

有人能帮帮忙吗?

代码语言:javascript
复制
public class MCV {

public static void main(String[] args) {
    Employee employee1 = new Employee(111, "Jacob", "Canada");  

    HashMap<Integer, Employee> employees = new HashMap<Integer, Employee>();

    employees.put(employee1.getEmployeeId(),employee1);

    Properties properties = new Properties();

    for (Entry<Integer, Employee> entry: employees.entrySet()){
          properties.put(entry.getKey().toString(),  entry.getValue().toString());
    }


        System.out.println("Does Hashmap contain 111 as key: " + employees.containsKey(111));
        System.out.println("Does hashmap contain Jacob as value: " + employees.containsValue(String.valueOf("Jacob")));

    }

}
EN

回答 1

Stack Overflow用户

发布于 2018-10-29 07:27:07

您的问题是,当Map不包含字符串值时,您正在测试它是否包含值"Jacob",这是一个字符串。它保存着员工的价值。你需要做一个更严格的遏制测试,测试它是否拥有一个名为“雅各布”的员工。

请注意映射声明:HashMap<Integer, Employee>,其中第二个泛型参数是Employee。因此,测试字符串的相等性永远不会起作用。

也许如果雅各布由一个firstName字段持有,并通过getFirstName()访问,这样的事情可能会起作用:

代码语言:javascript
复制
boolean foo = employees.values().stream().anyMatch(e -> e.getFirstName().equals("Jacob"));
System.out.println(foo);

如果您没有getFirstName()方法,那么可能是.getName(),但不确定,因为我们还不知道Employee类的结构。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53036897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档