Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hashMap.getValue()在有值时返回false_Java_Hashmap - Fatal编程技术网

Java hashMap.getValue()在有值时返回false

Java hashMap.getValue()在有值时返回false,java,hashmap,Java,Hashmap,当.getValue()调用条目“Jacob”时,当该值存在时,我得到一个false 错误位于第三行到最后一行 有人能帮忙吗 public class MCV { public static void main(String[] args) { Employee employee1 = new Employee(111, "Jacob", "Canada"); HashMap<Integer, Employee> employees = new HashMap

当.getValue()调用条目“Jacob”时,当该值存在时,我得到一个false

错误位于第三行到最后一行

有人能帮忙吗

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

    }

}
公共级MCV{
公共静态void main(字符串[]args){
雇员1=新雇员(111,“雅各布”,“加拿大”);
HashMap employees=新的HashMap();
employee1.getEmployeeId(),employee1);
属性=新属性();
for(条目:employees.entrySet()){
properties.put(entry.getKey().toString(),entry.getValue().toString());
}
System.out.println(“Hashmap是否包含111作为键:“+employees.containsKey(111));
System.out.println(“hashmap是否包含Jacob作为值:”+employees.containsValue(String.valueOf(“Jacob”)));
}
}

您的问题是,您正在测试映射是否包含值“Jacob”(字符串),而它不包含字符串值。它持有员工的价值观。你需要做一个更严格的遏制测试,测试它是否包含一个名为“Jacob”的员工

注意映射声明:
HashMap
,其中第二个通用参数是
Employee
。因此,测试字符串是否相等永远不会起作用

如果Jacob被一个firstName字段持有,并通过
getFirstName()
访问,那么类似的方法可能会起作用:

boolean foo = employees.values().stream().anyMatch(e -> e.getFirstName().equals("Jacob"));
System.out.println(foo);

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

您是否使用了IDE的调试器来进一步探究代码没有按预期运行的原因?不幸的是,IDE没有看到错误。另外,当询问调试非行为代码时,如果您能够创建并发布有效的代码帖子,而不是整个程序和不可编译的代码片段,而是一个可编译、可运行的程序,直接向我们显示您的问题,那么您和我们都会受益。
employees
是一个
HashMap
。每个值都是一个
Employee
引用,而不是一个字符串-因此
employees。containsValue(“Jacob”)
将始终返回false,而不管映射的内容如何。谢谢您,当前正在尝试感谢您,一旦创建了getFirstName方法并与boolean foo一起使用,输出就如预期的那样。也许下次HashMap会像你说的那样允许使用.getValue()。@Christian:是的,
Map
会允许测试完整的字符串,但不要这样做,因为这样会丢失信息。将地图保留为
地图