我有一种方法可以在参数中获得patientid
和scriptInfo
。但是如果我将它们作为null,则null存储在Map中,因为存储了null,因此Map大小会增加。
我希望如果我将此参数作为null接收,那么我根本不想存储它们,因为null本身不是存储在Map中的值,对我来说没用。
private Map<String, List<String>> getValidatedPatientData(ITransaction transaction, String patientId, String scriptInfo)
{
ppvValidatedinfo = new HashMap<String, List<String>>(); //
List<String> scriptDetails = new ArrayList<String>();
scriptDetails.add(scriptInfo);
ppvValidatedinfo.put(patientId, scriptDetails);
transaction.setValue(ITransactionHashtableWag.VALIDATED_PPV_PH_NBR, ppvValidatedinfo);
return ppvValidatedinfo;
}
答案 0 :(得分:1)
在方法的开头,假设需要在其他地方修改返回的地图:
if (patientId == null || scriptInfo == null)
return new HashMap<String, List<String>>();
或者,如果我不修改返回的地图,请使用emptyMap()
:
if (patientId == null || scriptInfo == null)
return new Collections.emptyMap();
无论哪种方式,我都在倡导使用Null Object Pattern。
答案 1 :(得分:0)
java.util.HashMap
支持null
作为关键值。你应该检查not null
。
if (patientId != null || scriptInfo != null){...}
答案 2 :(得分:0)
这里有一个关于此问题的讨论:Should functions return null or an empty object?。
如果您打算表明,那么返回null通常是最好的主意 没有数据可用。
空对象意味着已返回数据,而返回null 清楚地表明没有任何回报。
所以,我认为你应该只返回null并在以后进行适当的验证
if (patientId == null || scriptInfo == null)
return null;
else {
...
}
答案 3 :(得分:0)
只需使用ConcurrentHashMap
,不仅支持您的要求,而且还支持线程安全!