2014-09-08 13 views
10

Metoda Arrays.asList(<T>...A) zwraca List reprezentację A. Zwrócony tutaj obiekt to List wspierany przez tablicę, ale nie jest obiektem ArrayList.ArrayList a lista zwrócona przez Arrays.asList()

Poszukuję różnic między obiektami Arrays.asList() zwrotów i obiektu ArrayList - szybkiego źródła, aby je przekazać bez przechodzenia do kodu.

TIA.

+7

'asList' zwraca ** listę o stałym rozmiarze, wspieraną przez określoną tablicę **. – Maroun

+0

http://stackoverflow.com/questions/4658867/why-does-arrays-aslist-return-its-own-arraylist-implementation?rq=1 – Natix

Odpowiedz

16

Po wywołaniu Arrays.asList nie zwraca ona wartości java.util.ArrayList. Zwraca ona java.util.Arrays$ArrayList, która jest niezmienną listą. Nie można do niego dodać i nie można z niego usunąć.

Jeśli spróbujesz dodać lub usunąć elementy z nich dostaniesz UnsupportedOperationException

+0

To nie jest niezmienne. Możesz użyć ** list.set (index, value) **. Po prostu nie można zmienić ilości elementów –

13

będę rozszerzać mój komentarz trochę,

Jeden problem, który może wystąpić w przypadku korzystania asList jak nie było różni się od ArrayList obiektu:

List list = Array.asList(array) ; 
list.remove(0); //UnsupportedOperationException :(

Tutaj nie można usunąć element 0 bo asList zwraca listę stałym rozmiarze poparte określonej tablicy. Więc należy zrobić coś takiego:

List newList = new ArrayList(Arrays.asList(array)); 

w celu uczynienia newList modyfikowalny.

Powiązane problemy