Я хочу знать, безопасно / целесообразно ли преобразовывать из ArrayList в Array? У меня есть текстовый файл с каждой строкой строки:
1236
1233
4566
4568
....
Я хочу прочитать их в списке массивов, а затем преобразовать его в массив. Целесообразно / законно ли это делать?
Спасибо
Ответы:
Да, преобразовать файл
ArrayList
в файлArray
. Будет ли это хорошей идеей, зависит от вашего предполагаемого использования. Вам нужны операции, которыеArrayList
предоставляет? Если это так, сохраните егоArrayList
. Остальное преобразовать прочь!выходы
источник
The method toArray(T[]) in the type ArrayList<Character> is not applicable for the arguments (char[])
Это лучший способ (ИМХО).
Этот код также работает:
Но он менее эффективен: массив строк создается дважды: сначала создается массив нулевой длины, затем создается, заполняется и возвращается массив реального размера. Итак, если вы знаете необходимый размер (от
list.size()
), вы должны создать массив, достаточно большой для размещения всех элементов. В этом случае он не перераспределяется.источник
new String[0]
иnew String[size]
new String[0]
на самом деле более эффективен. shipilev.net/blog/2016/arrays-wisdom-ancientsДействительно ли это «хорошая идея», будет зависеть от вашего варианта использования.
источник
Object
предполагая, что v является ArrayList:
источник
Есть два стиля для преобразования коллекции в массив: либо с использованием массива предварительно заданного размера (например
c.toArray(new String[c.size()])
), либо с использованием пустого массива (напримерc.toArray(new String[0])
). В более старых версиях Java рекомендуется использовать массив с предварительно заданным размером, так как вызов отражения, необходимый для создания массива надлежащего размера, был довольно медленным. Однако после поздних обновлений OpenJDK 6 этот вызов был встроен, что сделало производительность версии с пустым массивом такой же, а иногда и лучше, по сравнению с версией с предварительно заданным размером. Также передача предварительно заданного массива опасна для параллельной или синхронизированной коллекции, поскольку возможна гонка данных между размером и вызовом toArray, что может привести к лишним значениям NULL в конце массива, если коллекция одновременно сокращалась во время операции. Вы можете следовать единому стилю:либо с использованием пустого массива (что рекомендуется в современной Java), либо с использованием массива предварительно заданного размера (что может быть быстрее в более старых версиях Java или JVM, не основанных на HotSpot) .источник
Это рекомендованное использование для более новой версии Java (> Java 6).
источник
Интерфейс Collection включает метод toArray () для преобразования новой коллекции в массив. Есть две формы этого метода. Версия без аргументов вернет элементы коллекции в массиве Object: public Object [] toArray (). Возвращенный массив не может быть приведен к любому другому типу данных. Это самый простой вариант. Вторая версия требует от вас передать тип данных массива, который вы хотите вернуть: public Object [] toArray (Object type []).
для справки обратитесь по этой ссылке http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
источник
Один из подходов - добавить второй цикл for, где печать выполняется внутри первого цикла for. Как это:
источник
Это зависит от того, чего вы хотите достичь, если вам понадобится манипулировать массивом позже, это потребует больше усилий, чем сохранение строки в ArrayList. У вас также есть произвольный доступ с ArrayList от
list.get( index );
источник