Więcej
Konwersja tablicy na listę w Javie
Jak przekonwertować tablicę na listę w Javie?
Użyłem Arrays.asList()
, ale zachowanie (i podpis) jakoś się zmieniło z Java SE 1.4.2 (docs teraz w archiwum) do 8 i większość snippetów, które znalazłem w sieci używa zachowania 1.4.2.
Na przykład:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- w wersji 1.4.2 zwraca listę zawierającą elementy 1, 2, 3
- w wersji 1.5.0+ zwraca listę zawierającą tablicę spam
W wielu przypadkach powinno to być łatwe do wykrycia, ale czasami może się wymknąć niezauważone:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
948
3
W twoim przykładzie jest to spowodowane tym, że nie możesz'mieć Listy typu prymitywnego. Innymi słowy,
List
nie jest możliwe.Możesz jednak mieć
List
używając klasyInteger
, która opakowuje prymitywint
. Przekształć swoją tablicę naList
za pomocą metodyArrays.asList
.Zobacz to kod uruchomiony na żywo na IdeOne.com.
Problem polega na tym, że varargs zostały wprowadzone w Java5 i niestety,
Arrays.asList()
został przeciążony z wersją vararg również. Tak więcArrays.asList(spam)
jest rozumiany przez kompilator Java5 jako parametr vararg tablic int.Ten problem jest wyjaśniony bardziej szczegółowo w Effective Java 2nd Ed., rozdział 7, pozycja 42.
musisz wrzucić do tablicy