Konvertering af array til liste i Java
Hvordan konverterer jeg et array til en liste i Java?
Jeg brugte Arrays.asList()
, men opførslen (og signaturen) er på en eller anden måde ændret fra Java SE 1.4.2 (dokumentationen er nu i arkivet) til 8, og de fleste uddrag, jeg har fundet på nettet, bruger 1.4.2-opførslen.
For eksempel:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- på 1.4.2 returnerer en liste med elementerne 1, 2, 3
- på 1.5.0+ returnerer en liste, der indeholder arrayet spam
I mange tilfælde burde det være let at opdage, men nogle gange kan det smutte ubemærket:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
948
3
I dit eksempel er det fordi du ikke kan have en liste af en primitiv type. Med andre ord,
List
er ikke muligt.Du kan dog have en
List
ved hjælp af klassenInteger
, der omslutter den primitive typeint
. Konverter dit array til enList
med hjælpefunktionenArrays.asList
).Se denne kode kørt live på IdeOne.com.
Problemet er, at varargs blev indført i Java5, og desværre blev
Arrays.asList()
også overbelastet med en vararg-version. SåArrays.asList(spam)
opfattes af Java5-compileren som en vararg-parameter for int-arrays.Dette problem er forklaret mere detaljeret i Effective Java 2nd Ed., kapitel 7, punkt 42.
du skal kaste i til array