оператор ++ не является допустимым оператором для объекта 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))
Код выше не является оптимальным;но он не использует автобокс.Оптимизированное решение будет использовать ListIterator (добавленный по многочисленным просьбам): ^)
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()++));
}