2

多分それは簡単な質問です。しかし、配列やコレクションに null 値を設定できない理由を知りたいですか? そのような簡単な例を見てください:

public static void main(String[] args) {

   Map<String, Object> map = new HashMap<>();
   map.put("first",null);
   map.put("first1",new BigDecimal(1.5));
   map.put("first2",new BigDecimal(2.5));
   map.put("first3",new BigDecimal(3.5));


   String[]array1 = new String[map.values().size()];
   Object[]array2 = new Object[map.values().size()];

   int counter = 0;

   for(Map.Entry<String,Object> entry: map.entrySet()){

       String header = entry.getKey();
       Object value = entry.getValue();

       array1[counter] = header;
       array2[counter] = value;

       counter++;

   }
}

趣旨をお聞かせいただければ幸いです。

4

4 に答える 4

4

オブジェクト配列にはnull、インスタンス化されるときに値が設定されます。一方、コレクションは最初は空であるため、そもそも「入力」できるものはありません。必要にnull応じて値を入力することもできますが、そのポイントは何でしょうか? 必要に応じて要素を aCollectionに追加するだけです。値を入力しても意味がnullありません (すべてのコレクションで許可されるわけではなく、型によって異なります)。

于 2013-09-30T16:43:45.150 に答える
1

Arrays.fill次のように、配列に値を入力するために使用できます。

String[] arr = new String[5]; 
System.out.println(Arrays.deepToString(arr));
Arrays.fill(arr,"initial value");
System.out.println(Arrays.deepToString(arr));
Arrays.fill(arr,null);
System.out.println(Arrays.deepToString(arr));

出力:

[null, null, null, null, null]
[initial value, initial value, initial value, initial value, initial value]
[null, null, null, null, null]
于 2013-09-30T16:46:19.147 に答える
0

ジェネリクスを使用する場合、型安全性を高めるために、Object よりも具体的なものを指定するのがベスト プラクティスだと思います。したがって、HashMap を次のように更新することができます。

Map<String, BigDecimal> map = new HashMap<Sting, BigDecimal>();

次に、null の BigDecimal オブジェクトを作成してマップに入力できます。

于 2013-09-30T16:47:26.483 に答える