for (Policy policy:list) {
PolicyKey policyKey = policy.getPolicyKey();
System.out.println("policyMap"+policyMap);
System.out.println("policyKey"+policyKey);
if (policyMap.get(policyKey) == null) {
policyMap.put(policyKey, policy);
}
代码上边所示:policyMap是if前 new的;
policyKey由(t,p,y)3个字段组成;
第一次循环if内判断为空,正常put值到map;
第二次循环policyKey中的p字段值变了,if判断竟然不是null;
跪求大神教我 如何写if里判断为空的写法
按照你的逻辑看是没有问题的,那么问题就可能出现在一下几点
1.policyMap中确实已经存在了值
2.policyKey的hashCode和equals写的有问题,因为map是靠hashCode计算出hash值来确定位置,然后
再根据equals来判断位置上是否有该值的。所以自定义的key一定要写好自己的hashCode和equals。
如果有帮助,希望采纳
就是这样写啊! 判断是否为null
“policyKey由(t,p,y)3个字段组成;”和“第二次循环policyKey中的p字段值变了,if判断竟然不是null;”——这两句话完全没看懂。
建议:
1、简化一下问题;
2、把有疑问的代码块抽离出来,写一个测试类,单独测试。