2013-02-16 2 views
0

себе следующую ArrayList в Java:Java ArrayList: добавление примитивного типа или его класса-оболочки: какая разница?

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

Я хочу знать, если есть разница при добавлении новых значений либо в виде примитивных типов или как оберток-классов:

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

Заранее спасибо!

+0

Спасибо за ваши объяснения, сейчас мне повезло :) – BNetz

ответ

8

Там нет никакой разницы в add из-за авто бокс/распаковка. На самом деле не делайте new Integer(12), но Integer.valueOf(12), так как он использует мультяшный рисунок и повторно использует известные объекты (в диапазоне -128, 127). Таким образом, новый объект не будет создан.

Например, существует разница в remove.
Поскольку, если вы намереваетесь позвонить remove(Object), вызывающий remove(5) позвонит remove(int index), и это, возможно, не то, что вы хотите.
Вам необходимо сделать remove((Integer)5), если вы хотите удалить номер 5 или remove(5), если вы хотите удалить пятый элемент.

+0

+1 для упоминания 'мультяшный узор' –