0

Java で次の ArrayList を想像してみてください。

ArrayList<Integer> u = new ArrayList<Integer>();

新しい値をプリミティブ型またはラッパー クラスとして追加するときに違いがあるかどうかを知りたいです。

u.add(new Integer(12));
u.add(12);

前もって感謝します!

4

2 に答える 2

8

add自動ボックス化/ボックス化解除による違いはありません。fighweight パターンを使用し、既知のオブジェクト (-128、127 の範囲) を再利用するため、new Integer(12)実際には行わないでください。Integer.valueOf(12)したがって、新しいオブジェクトは作成されません。

などの違いがありremoveます。
あなたが電話をかけるつもりなら電話をかけるのでremove(Object)remove(5)これremove(int index)はおそらくあなたが望むものではありません. 数字を削除したい場合、または5 番目の要素を削除したい場合は、これ
を行う必要があります。remove((Integer)5)5remove(5)

于 2013-02-16T20:33:45.783 に答える
7

コンパイラーがu.add(12);それを書き換えると、公式チュートリアルhttp://docs.oracle.com/javase/tutorial/java/data/autoboxing.html の詳細を読むよりu.add(Integer.valueOf(12));も効率的になりますu.add(new Integer(12));

于 2013-02-16T20:33:13.490 に答える