-1

我有一个方法,我可以在其中获取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;
  }
4

4 回答 4

1

方法一开始,假设返回的map需要在别处修改:

if (patientId == null || scriptInfo == null)
    return new HashMap<String, List<String>>();

或者,如果我不会修改返回的地图,请使用emptyMap()

if (patientId == null || scriptInfo == null)
    return new Collections.emptyMap();

无论哪种方式,我都提倡使用Null Object Pattern

于 2013-01-22T16:32:10.740 回答
0

这里有一个关于这个的讨论:函数应该返回 null 还是空对象?.

如果您打算指示没有可用数据,则返回 null 通常是最好的主意。

空对象表示已返回数据,而返回 null 则明确表示未返回任何内容。

所以,我认为你应该只返回 null 并稍后进行适当的验证

if (patientId == null || scriptInfo == null)
    return null;
else {
   ...
}
于 2013-01-22T16:43:01.577 回答
0

只需使用ConcurrentHashMap,不仅支持您的要求,而且它是线程安全的!

于 2013-01-22T16:49:39.763 回答
0

java.util.HashMap支持null作为键也值。你应该not null检查。

if (patientId != null || scriptInfo != null){...}
于 2013-01-22T16:34:40.560 回答