-1

パラメータを取得するメソッドがありpatientidますscriptInfo。しかし、それらをnullとして取得すると、nullがMapに格納され、nullが格納されるため、Mapのサイズが大きくなります。

このパラメーターをnullとして受け取った場合、null自体はマップに保存される値ではなく、私には役に立たないため、それらをまったく保存したくないと思います。

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

メソッドの開始時に、返されたマップを他の場所で変更する必要があると想定します。

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

または、返されたマップが変更されない場合は、:を使用しますemptyMap()

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

いずれにせよ、私はNullObjectPatternの使用を提唱しています

于 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

java.util.HashMapnullキーとしても値をサポートします。not nullチェックする必要があります。

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

使用するConcurrentHashMapだけで、あなたの要求をサポートするだけでなく、スレッドセーフでもあります!

于 2013-01-22T16:49:39.763 に答える