Konwertuj Arraylistę na tablicę obiektów

Czy istnieje polecenie w Javie do konwersji ArrayList na tablicę obiektów. Wiem jak to zrobić kopiowanie każdego obiektu z arrayList do tablicy obiektów, ale zastanawiałem się, czy nie zrobiłoby się to automatycznie.

Chcę coś takiego:

ArrayList<TypeA> a;

// Let's imagine "a" was filled with TypeA objects

TypeA[] array = MagicalCommand(a);
Author: marionmaiden, 2010-04-30

5 answers

Coś w rodzaju standardowej kolekcji.toArray (T[]) powinien robić to, czego potrzebujesz (zauważ, że ArrayList implementuje Collection):

TypeA[] array = a.toArray(new TypeA[a.size()]);

Na marginesie, powinieneś rozważyć zdefiniowanie a jako typu List<TypeA>, a nie ArrayList<TypeA>, unikając pewnej specyficznej definicji implementacji, która może nie być tak naprawdę stosowana w Twojej aplikacji.

Zobacz również to pytanie o użyciu a.size() zamiast 0 jako rozmiaru tablicy przekazanej do a.toArray(TypeA[])

 87
Author: Mark Elliot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:16

Możesz użyć tego kodu

ArrayList<TypeA> a = new ArrayList<TypeA>();
Object[] o = a.toArray();

Następnie, jeśli chcesz, aby ten obiekt wrócił do TypeA, po prostu sprawdź go za pomocą metody instanceOf.

 9
Author: Shashank T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-02 10:59:38
 6
Author: Rachel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 07:33:54

Konwertuj Arraylistę na obiekt array

ArrayList ma konstruktor, który pobiera zbiór, więc wspólne idiom to:

List<T> list = new ArrayList<T>(Arrays.asList(array));

, która konstruuje kopię listy utworzonej przez tablicę.

Teraz Arrays.asList(array) zawija tablicę, więc zmiany na liście wpłynie na tablicę i visa versa. Chociaż nie możesz dodać ani usunąć

Elementy z takiej listy.

 2
Author: user527619,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-10 07:33:36
TypeA[] array = (TypeA[]) a.toArray();
 1
Author: jweber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-30 14:55:03