当.getValue()调用条目“雅各布”时,当值在那里时,我得到了一个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")));
}
}
发布于 2018-10-29 07:27:07
您的问题是,当Map不包含字符串值时,您正在测试它是否包含值"Jacob",这是一个字符串。它保存着员工的价值。你需要做一个更严格的遏制测试,测试它是否拥有一个名为“雅各布”的员工。
请注意映射声明:HashMap<Integer, Employee>
,其中第二个泛型参数是Employee
。因此,测试字符串的相等性永远不会起作用。
也许如果雅各布由一个firstName字段持有,并通过getFirstName()
访问,这样的事情可能会起作用:
boolean foo = employees.values().stream().anyMatch(e -> e.getFirstName().equals("Jacob"));
System.out.println(foo);
如果您没有getFirstName()
方法,那么可能是.getName()
,但不确定,因为我们还不知道Employee类的结构。
https://stackoverflow.com/questions/53036897
复制相似问题