当.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")));
}
}
答案 0 :(得分:4)
您的问题是,当Map不包含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类的结构。