2014-02-21 2 views
0

У меня есть быстрый вопрос о том, что я немного неясен, что является лучшей практикой.Использование Integer или int в a для каждого с коллекцией

Скажем, у меня есть коллекция, с, который содержит число 3, 5 и 8.

Collection<Integer> c = new ArrayList<Integer>(); c.add(3); c.add(5); c.add(8);

Я понимаю идею для-каждого цикла, однако я не ясно, с одной стороны ,

Я пишу: for(Integer i: c){} или for(int i: c)?

Если возможно, прокомментируйте скорость, эффективность, преимущества и недостатки или каждый из них.

+0

Второй может выбросить NPE - ваша коллекция содержит элемент, который является «null». –

+0

Возможный дубликат [Почему существуют классы-оболочки в Java?] (Http://stackoverflow.com/questions/3579035/why-are-there-wrapper-classes-in-java) – femtoRgon

ответ

2

Это зависит от того, что вы делаете внутри цикла for-each, и вам нужно будет «повторно установить» int, или как часто вам нужно будет удалить Integer. Это также зависит от того, как или если вы хотите обработать null - если вы хотите, чтобы вы разрешили null, вы должны использовать Integer.

Честно говоря, вряд ли это будет иметь существенное значение в любом случае.

1

Целое число отображает значение int как объект, поэтому оно может быть нулевым, но int не может. Таким образом, int является базовым типом, поэтому он использует меньше памяти, чем объект Integer.

+1

Но у вас уже есть встроенный в квадрат 'Integer ', поэтому вы на самом деле не сохраняете или не теряете память в любом случае. –

1

Ваша коллекция содержит Integer s, это лучше повторить с использованием for (Integer i: c). Вы захотите сделать это, чтобы избежать ненужного распаковки Integer до int.

Смежные вопросы