Подтвердить что ты не робот

Преобразование целочисленного списка в массив int

Есть ли способ конвертировать список целых чисел в массив из int (не целочисленный). Что-то вроде List to int []? Без цикла через список и вручную преобразования intger в int.

4b9b3361

Ответ 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);

Ресурсы:

В той же теме:

Ответ 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())};

Я думаю, что это должно решить вашу проблему.