Действительно ли возможно сделать это в Java? Возможно, я использую неправильный синтаксис?
ArrayList<Integer> iAL = new ArrayList<Integer>();
iAL.addAll(Arrays.asList(new Integer[] {1, 2, 3, 4, 5 }));
for (int i = 0; i < iAL.size(); ++i) {
System.out.println(iAL[i]); //<-------- HERE IS THE PROBLEM
}
Кроме того, это возможный сделать что-то как
iAL.addAll( new int[] {1, 2, 3, 4, 5} );
как замечен на c#?
Спасибо
Попробуйте System.out.println (iAL.get (i));
. Потому что это список
, а не массив
ArrayList<Integer> iAL = new ArrayList<Integer>();
iAL.addAll(Arrays.asList(new Integer[] {1, 2, 3, 4, 5 }));
for (int i = 0; i < iAL.size(); ++i) {
System.out.println(iAL.get(i));
}
AFAIK
iAL.addAll (Arrays.asList (new Integer [] {1, 2, 3, 4, 5}));
// это кратчайшее решение
Нет, вы должны использовать .get (i)
; [i]
предназначен только для массивов. Однако, если вам не нужна индексная переменная для чего-то еще, предпочтительнее использовать синтаксис for-each (согласно ответу trashgod).
Во-вторых, если вы не изменяете размер списка (по-прежнему можно изменять отдельные элементы), было бы вполне разумно сделать следующее:
List<Integer> iAL = Arrays.asList(1, 2, 3, 4, 5);
Обратите внимание, что Arrays.asList ()
принимает параметр varargs, поэтому нет причин явно создавать массив.
Если вам нужен список с изменяемым размером, то, вероятно, самым коротким будет следующий:
List<Integer> iAL = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
Вдобавок я бы добавил еще два примечания к вашему коду:
Например, объединение нескольких полезных предложений из других ответов
List<Integer> list = new ArrayList<Integer>();
list.addAll(Arrays.asList(1, 2, 3, 4, 5 ));
for (Integer i : list) {
System.out.println(i);
}
Приложение: Вопрос о кодировании интерфейса интересен, и комментарий Карла особенно уместен. Использование типа интерфейса List
сводит к минимуму ваши обязательства по использованию конкретной реализации. Если возникнет необходимость, вы можете позже переключиться на любой класс , реализующий List
.
Я проведу рефакторинг всего вашего кода так:
List<Integer> iAL = Arrays.asList(1, 2, 3, 4, 5 );
for (int i : iAL) {
System.out.println(i);
}
Также, возможно ли сделать что-то вроде
iAL.addAll( new int[] {1, 2, 3, 4, 5} )
Достаточно близко:
iAL.addAll(Arrays.asList(1, 2, 3, 4, 5));
В вашем коде нет необходимости в new Integer[]
.