Преобразование ArrayList в массив объектов
Есть ли команда в java для преобразования ArrayList в массив объектов. Я знаю, как сделать это копирование каждого объекта из arrayList в массив объектов, но мне было интересно, будет ли это сделано автоматически.
Мне нужно что-то вроде этого:
ArrayList<TypeA> a;
// Let imagine "a" was filled with TypeA objects
TypeA[] array = MagicalCommand(a);
Ответы
Ответ 1
Что-то вроде стандартного Collection.toArray(T []) должно делать то, что вам нужно (обратите внимание, что ArrayList
реализует Collection
)
TypeA[] array = a.toArray(new TypeA[a.size()]);
На стороне примечания следует рассмотреть возможность определения a
типа List<TypeA>
, а не ArrayList<TypeA>
, поэтому избегайте определенного определения конкретной реализации, которое может быть неприменимо для вашего приложения.
Также см. этот вопрос об использовании a.size()
вместо 0
в качестве размера массива, переданного в a.toArray(TypeA[])
Ответ 2
Да. ArrayList
имеет метод toArray()
.
http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html
Ответ 3
Вы можете использовать этот код
ArrayList<TypeA> a = new ArrayList<TypeA>();
Object[] o = a.toArray();
Затем, если вы хотите, чтобы этот объект возвращался в TypeA, просто проверьте его с помощью метода instanceOf.
Ответ 4
Преобразование ArrayList в объект Массив
ArrayList имеет конструктор, который принимает коллекцию, поэтому общий
Идиома:
List<T> list = new ArrayList<T>(Arrays.asList(array));
Создает копию списка, созданного массивом.
теперь Arrays.asList(array)
будет обертывать массив, поэтому изменения в списке
будет влиять на массив, и наоборот. Хотя вы не можете добавить или удалить
элементов из такого списка.
Ответ 5
TypeA[] array = (TypeA[]) a.toArray();