Java 避免在映射中存储null
我有一种方法,可以在参数中获取Java 避免在映射中存储null,java,map,Java,Map,我有一种方法,可以在参数中获取patientid和scriptInfo。但如果我把它们设为null,那么null存储在Map中,因为null被存储,所以Map的大小会增加 我希望,如果我接收到这个参数为null,那么我根本不想存储它们,因为null本身不是存储在Map中的值,对我没有用处 private Map<String, List<String>> getValidatedPatientData(ITransaction transaction, String pa
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;
}
私有映射getValidatedPatientData(ITransaction事务,字符串patientId,字符串scriptInfo)
{
ppvValidatedinfo=新HashMap();//
List scriptDetails=new ArrayList();
scriptDetails.add(scriptInfo);
ppvValidatedinfo.put(patientId,scriptDetails);
transaction.setValue(ITransactionHashtableWag.VALIDATED\u PPV\u PH\u NBR,ppvValidatedinfo);
返回ppvValidatedinfo;
}
在方法的开头,假设返回的映射需要在别处修改:
if (patientId == null || scriptInfo == null)
return new HashMap<String, List<String>>();
无论如何,我都主张使用。
java.util.HashMap
支持null
作为键值。您应该将不为空
选中
if (patientId != null || scriptInfo != null){...}
这里有一个关于这个的讨论: 如果您打算指出,返回null通常是最好的主意 没有可用的数据 空对象表示已返回数据,而返回null 清楚地表明没有归还任何物品 因此,我认为您应该返回null,然后进行适当的验证
if (patientId == null || scriptInfo == null)
return null;
else {
...
}
只需使用
ConcurrentHashMap
,它不仅支持您的需求,而且是线程安全的 标点符号很好,应该加以采纳。if(patientId!=null)ppvValidatedinfo.put(patientId,scriptDetails)代码>?嗯。。。检查它是否为空并发出错误信号,也许?这是你的代码吗?如果是,那么您应该知道如何检查NOTNULL并忽略将其放入映射。或者你是从其他人那里得到代码的?@RobertH:像这样:{;}
?Lopez,你能解释一下,如果我们得到任何空值,为什么我们会返回一个新的hashmap。因为你会这样做。@user1982609如果可以避免的话,返回空值是个坏主意。否则,如果返回值为null,则必须检查此方法的调用点。要了解我的意思,请查看我将使用的返回集合.emptyMap()
(除非返回的映射需要是可变的)。@assylias您能详细解释一下我没有了解空的概念吗。。。当他创建一个局部变量时,为什么线程安全性很重要?这没有什么意义。
if (patientId == null || scriptInfo == null)
return null;
else {
...
}