Matrix omzetten naar lijst in Java

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)
  • op 1.4.2 geeft een lijst terug met de elementen 1, 2, 3 *op 1.5.0+ geeft een lijst met de array 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);
Oplossing

In jouw voorbeeld is dat omdat je geen List van een primitief type kunt hebben. Met andere woorden, List is niet mogelijk.

Je kunt echter wel een List 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 list = Arrays.asList(spam);

Zie deze code live op IdeOne.com.

Commentaren (16)

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.

Commentaren (2)

moet je in een matrix gieten

Arrays.asList((Object[]) array)
Commentaren (2)