[英]Java - Memory leak with entry.getValue() when value is hashMap
[英]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.