@MaxLich
java developer

Как преобразовать ArrayList в int[]?

Нужно сформировать массив из чисел, и его точный размер заранее неизвестен (зависит от входных данных, не напрямую). Поэтому применяю ArrayList. Числа - целые, натуральные. Но на выходе мне нужно получить обычный массив из int'ов (примитивный тип). Пока нашёл метод toArray у ArrayList, но не могу понять, как с помощью этого метода преобразовать объект типа ArrayList в массив числе типа int[].
Можно, конечно, воспользоваться циклом, но мне кажется, это не самое лучшее и простое решение + затратно по времени и потребляемой памяти (а на это есть некие ограничения).
  • Вопрос задан
  • 6294 просмотра
Решения вопроса 1
evgeniy8705
@evgeniy8705
Повелитель вселенной
public class App {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9));
        int[] arr = new int[list.size()];

        for (int i = 0; i < list.size(); i++) {
            arr[i] = list.get(i);
        }

        System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
    }
}


Или

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9));
Integer[] arr = list.toArray(new Integer[0]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Если ява 8 то можно так:
nt[] arr = list.stream().mapToInt(i -> i).toArray();

Если ява 7-8 то можно воспользоваться apache commons вот так:
int[] arr = ArrayUtils.toPrimitive(list.toArray(new Integer[0]));

Вариант с помощью google guava:
int[] arr = Ints.toArray(list);
ну и варианты которые выше уже написали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы