int [] arr = {1, 2, 3, 4};
List list = new ArrayList();
вот так привести массив в List могу.
Arrays.stream(arr).forEach(o-> list.add(o));
for (int i = 0; i < arr.length; i++) list.add(arr[i]);
list = Arrays.stream(arr).boxed().collect(Collectors.toList());
а так нет:
list = Arrays.asList(arr);
Collections.addAll(list,arr);
list = Stream.of(arr).collect(Collectors.toList());
при том что ЦИТАТА: Как и следует из документации Arrays.asList: формирует список на основе массива. Массив при этом используется для внутреннего представления списка. Таким образом сохраняется связь между списком и исходным массивом:
и ЦИТАТА: Collections.addAll(ArrayList list, T[] array) — лучший способ преобразовать Array в ArrayList, потому что массив данных копируется в список в виде самостоятельного объекта. А это значит, что исходный массив и результирующий ArrayList будут независимы друг от друга. ТАКЖЕ (censored) - смотреть выше.
ВОПРОС: везде где гуглю в примерах то стринги то классы(экзы с именами и т.д.). пробую найти ответ на запрос"java array to list" нашел только
Integer[] spam = new Integer[] { 1, 2, 3, 4 };
List<Integer> list = Arrays.asList(spam);
может я ищу Метод в коллекциях которого не существует. и нужно ввести еще одну операцию массив int в массив Integer??? и нет готового метода это сделать = получается нужно самому написать итерацию или создать новый массив Integer + и затем к нему применить методы из Arrays или Collections, различные варианты с Stream.of(arr) тоже не помогают. вообще не понятно что тут стримится, кажется что ничего. boxed() есть в Arrays.stream(arr).boxed() , но почемуто нету в Stream.of(arr). p.s. если тема вопроса тупая - то пусть модераторы удаляют,
кто умеет скройте плиз нижний текст в скрытый разворачивающийся текст.
зачем вообще я это пытаюсь понять везде по форумам массивы примитивов int и т.д. никто совершенно не рассматривает - всюду Object, и String(тот же object), может их вообще не используют по жизни в Java - это как устаревшее и массивы типа int это моветон, а т.к. памяти хватает - то все объявляют массивы (речь не идет о сетах мапах) сразу все в типах Integer Double и т.п, хоть они и занимают в четыре раза больше памяти? и как анекдот: зачем вообще нужно int [] в list загонять в реальных проектах тоже, не знаю. надеюсь со временем станет понятно. нужно это или нет.
Вы немного запутались.
В зависимости от вашей задачи вам может подойти один из этих способов преобразования массива примитивных интов в список:
int [] arr = {1, 2, 3, 4};
List<Integer> list = Arrays.asList(arr);
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
List<Integer> list = Stream.of(arr).collect(Collectors.toList());
Далее есть один нюанс. Arrays.asList()
возвращает, согласно документации
fixed-size list backed by the specified array
Т.е. не обычный ArrayList
, а такой, который не позволяет добавлять в него новые элементы. Именно по этому у вас не работает такой код:
list = Arrays.asList(arr);
Collections.addAll(list,arr); //тут вы пытаетесь в нерасширяемый список добавить его же копию.
Это обходят просто - оборачивают нерасширяемый список в ArrayList
так:
List<Integer> list = new ArrayList<>(Arrays.asList(arr));
Второй нюанс - вывод в консоль содержимого списка. Т.к. в консоль выводится возвращаемое значение метода toString
то, если он в к-л классе не переопределён, то может вернуть что-то типа I@65b54208
. Однако, если вы пройдётесь циклом по списку и выведите каждый его элемент, то увидите, что всё в порядке.
По поводу использования примитивов и массивов. В лично моей практике они не используются. У списков и объектных аналогов примитивов больше методов и они гибче. Засим, проще код писать с их использованием. К тому же, если писать не на Java, а на Kotlin, то там вообще примитивов нет.
Да, память можно съэкономить на примитивах, но этим стоит заморачиваться только в особенных случаях. Если вам критично важно экономить байты и микросекунды и не критична красота и удобство кода - то используйте примитивы. Или вообще язык более низкого уровня. Иначе - используйте списки вместо массивов и, соответственно, объектные аналоги примитивов.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Использую spring с docker-composeМне нужно чтобы при падении контейнера spring он перезапускался, определенное кол-во раз
Имеется Spring boot веб приложениеПри запуске с IntelliJ Idea сервер стартует, все работает нормально
Прошу подсказатьИмеется программа подобия радио-плеера на android, она воспроизводит звук (mp3, vaw) стриминговых сервисов icecast/shoutcast