500個の要素でHashMapを初期化しようとしていますが、すべて0に設定されています。私はラムダforEachループを使ってみましたが、ラムダループの完了後でさえ、マップのサイズはまだゼロです。 私はメモリがput操作のために割り当てられる時を知りたいと思っていました。HashMap要素にメモリが割り当てられるのはいつですか?
Map<Integer, Integer> map = new HashMap<>(500);
map.keySet().forEach(i -> map.put(i, new Integer(0)));
System.out.println("Size of the HashMap using Lambda forEach loop: " + map.size());
for (int i=0; i < 500; i ++){
map.put(i,0);
}
System.out.println("Size of the HashMap using regular for loop: " + map.size());
出力:
Size of the HashMap using Lambda forEach loop: 0
Size of the HashMap using regular for loop: 500
PS:私は別の方法がJava8を使用している理解は、ハッシュマップに要素を追加するためのストリームが、私はput操作を知ることに、より興味を持っています。
マップのキーを反復していますが、まだ地図に何も配置していません。したがって、keySetは空です。驚くべきことは? –
マップが空でない場合、それを反復処理中に 'put'を呼び出すことは壊れているとみなされなければなりません。さらに、新しい整数(0)のポイントは何ですか? – Holger
HashMapのキーは、0..N-1だけでなく、例えば、それらは完全に100010000050310010021001501などである可能性があります。キーが常に0..N-1の場合、HashMapよりも効率が良いように(組み込みの)配列またはArrayListを使用できます。 –