Hoe converteer ik een array naar een lijst in Java?
Ik gebruikte de Arrays.asList()
maar het gedrag (en signatuur) is op de een of andere manier veranderd van Java SE 1.4.2 (docs nu in archief) naar 8 en de meeste snippets die ik op het web vond gebruiken het 1.4.2 gedrag.
Bijvoorbeeld:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
In veel gevallen zou dit gemakkelijk te detecteren moeten zijn, maar soms kan het ongemerkt gebeuren:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
In jouw voorbeeld is dat omdat je geen List van een primitief type kunt hebben. Met andere woorden, List<int>
is niet mogelijk.
Je kunt echter wel een List<Integer>
hebben door gebruik te maken van de klasse Integer
die de primitieve int
omhult. Converteer je array naar een List
met de Arrays.asList
utility methode.
Integer[] spam = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(spam);
Zie deze code live op IdeOne.com.
Het probleem is dat varargs geïntroduceerd zijn in Java5 en helaas, Arrays.asList()
is ook overloaded met een vararg versie. Dus Arrays.asList(spam)
wordt door de Java5 compiler opgevat als een vararg parameter van int arrays.
Dit probleem wordt in meer detail uitgelegd in Effective Java 2nd Ed., Chapter 7, Item 42.