Как конвертировать int[]
в List<Integer>
в Java?
Конечно, меня интересует любой другой ответ, кроме как делать это в цикле, пункт за элементом. Но если нет другого ответа, я выберу его как лучший, чтобы показать тот факт, что эта функциональность не является частью Java.
java
arrays
collections
boxing
autoboxing
pupeno
источник
источник
Ответы:
Там нет ярлыка для перехода от
int[]
к ,List<Integer>
какArrays.asList
не иметь дело с боксом и будет просто создатьList<int[]>
что не то , что вы хотите. Вы должны сделать служебный метод.источник
new ArrayList<Integer>() {{ for (int i : ints) add(i); }}
Streams
В Java 8 вы можете сделать это
источник
Также из библиотек гуавы ... com.google.common.primitives.Ints:
источник
Arrays.asList не будет работать, как ожидают некоторые другие ответы.
Этот код не будет создавать список из 10 целых чисел. Будет напечатано 1 , а не 10 :
Это создаст список целых чисел:
Если у вас уже есть массив целых чисел, нет быстрого способа конвертации, лучше использовать цикл.
С другой стороны, если ваш массив содержит объекты, а не примитивы, Arrays.asList будет работать:
источник
Я добавлю другой ответ другим методом; нет цикла, но есть анонимный класс, который будет использовать функции автобокса:
источник
set
метод, и теперь я могу даже отсортировать массив ...Наименьший кусок кода будет:
откуда ArrayUtils происходит от общего достояния :)
источник
ArrayUtils
что это относительно большая библиотека для приложения для AndroidArrayUtils.toPrimitive(...)
.В Java 8 с потоком:
или с коллекционерами
источник
В Java 8:
источник
Если вы используете Java 8, мы можем использовать потоковый API, чтобы преобразовать его в список.
Вы также можете использовать IntStream для конвертации.
Есть и другие внешние библиотеки, такие как guava и apache commons, также доступные для конвертации.
веселит.
источник
Также стоит проверить этот отчет об ошибке , который был закрыт по причине «Не дефект» и следующий текст:
«Автобокс целых массивов - не определенное поведение, по уважительной причине. Это может быть слишком дорого для больших массивов».
источник
попробуйте этот класс:
прецедент:
источник
Лучший снимок:
Примеры:
источник
Если вы открыты для использования сторонней библиотеки, это будет работать в Eclipse Collections :
Примечание: я являюсь коммиттером для Eclipse Collections .
источник
источник
Что насчет этого:
int[] a = {1,2,3}; Integer[] b = ArrayUtils.toObject(a); List<Integer> c = Arrays.asList(b);
источник
Вот решение:
Вывод:
источник
Вот еще одна возможность, опять же с Java 8 Streams:
источник
Вот универсальный способ конвертировать массив в ArrayList
Применение
источник
увидеть это
источник