++演算子はIntegerオブジェクトの有効な演算子ではないため、Javaは自動ボクシング機能を使用してIntegerオブジェクトをintプリミティブに変換します。それが変換されると、intプリミティブがインクリメントされます。あなたはプリミティブを保存しないので、それは失われます。
あなたは
List<Integer> list = new LinkedList();
list.add(1);
list.add(2);
list.add(3);
for (int index; index < list.size(); index++) {
int value = list.get(index).intValue();
value++;
list.set(index, Integer.valueOf(value));
}
System.out.println(list.get(0))
上記のコードのような何かをする必要がある目標を達成するためには最適ではありません。 autoboxingは使用しません。このループは重くオートボクシング使用していますあなたは何をオートボクシングのアイデアを取得したい場合は、カバーの下にやっていること^)
ListIterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
iterator.set(iterator.get()++);
}
注意、同等のソリューション:最適化されたソリューションは、(好評につき追加)反復子を使用します以下に示すオートバイには依存しません。
ListIterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
iterator.set(Integer.valueOf(iterator.get().intValue()++));
}
質問は良い冗談になります:) – bestsss