Есть ли способ конвертировать список целых чисел в массив из int (не целочисленный). Что-то вроде List to int []? Без цикла через список и вручную преобразования intger в int.
Преобразование целочисленного списка в массив int
Ответ 1
Я уверен, что вы можете найти что-то в сторонней библиотеке, но я не верю, что там что-то встроено в стандартные библиотеки Java.
Я предлагаю вам просто написать функцию утилиты, чтобы сделать это, если вам не нужна большая аналогичная функциональность (в этом случае было бы целесообразно найти соответствующую стороннюю библиотеку). Обратите внимание, что вам нужно будет выяснить, что делать с нулевой ссылкой в списке, которая явно не может быть представлена точно в массиве int.
Ответ 2
Вы можете использовать toArray
, чтобы получить массив из Integers
, ArrayUtils
из общих долей apache, чтобы преобразовать его в int[]
.
List<Integer> integerList = new ArrayList<Integer>();
Integer[] integerArray = integerList.toArray(new Integer[0]);
int[] intArray = ArrayUtils.toPrimitive(integerArray);
Ресурсы:
- Сообщество Apache -
ArrayUtils.toPrimitive(Integer[])
- Apache commons lang
- Javadoc -
Collection.toArray(T[])
В той же теме:
Ответ 3
Нет:)
Вам нужно пройти через список. Это не должно быть слишком болезненно.
Ответ 4
Вот утилитный метод, который преобразует коллекцию целых чисел в массив из int. Если ввод равен null, возвращается null. Если ввод содержит любые нулевые значения, создается защитная копия, удаляя из нее все значения NULL. Оригинальная коллекция остается неизменной.
public static int[] toIntArray(final Collection<Integer> data){
int[] result;
// null result for null input
if(data == null){
result = null;
// empty array for empty collection
} else if(data.isEmpty()){
result = new int[0];
} else{
final Collection<Integer> effective;
// if data contains null make defensive copy
// and remove null values
if(data.contains(null)){
effective = new ArrayList<Integer>(data);
while(effective.remove(null)){}
// otherwise use original collection
}else{
effective = data;
}
result = new int[effective.size()];
int offset = 0;
// store values
for(final Integer i : effective){
result[offset++] = i.intValue();
}
}
return result;
}
Обновление: Guava имеет один-лайнер для этой функции:
int[] array = Ints.toArray(data);
Справка:
Ответ 5
List<Integer> listInt = new ArrayList<Integer>();
StringBuffer strBuffer = new StringBuffer();
for(Object o:listInt){
strBuffer.append(o);
}
int [] arrayInt = new int[]{Integer.parseInt(strBuffer.toString())};
Я думаю, что это должно решить вашу проблему.