繁体   English   中英

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

[英]Java hashMap .getValue() returning false when value is there

当.getValue()调用条目“ Jacob”时,当值在那里时,我得到的是

错误位于倒数第三行

谁能帮忙吗?

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

    }

}

您的问题是,当不包含String值时,您是否正在测试Map是否包含值“ Jacob”(字符串)。 它拥有员工价值观。 您需要进行更严格的遏制测试,以测试其是否持有名字为“ Jacob”的Employee。

请注意,地图声明: HashMap<Integer, Employee> ,其中第二个通用参数是Employee 因此,测试与String的相等性将永远无法进行。

也许,如果Jacob被firstName字段保留并通过getFirstName()访问,则可能会发生以下情况:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM