Konvertering av array till lista i Java
Hur konverterar jag en array till en lista i Java?
Jag använde Arrays.asList()
men beteendet (och signaturen) har på något sätt ändrats från Java SE 1.4.2 (dokumentationen finns nu i arkivet) till 8 och de flesta utdrag jag hittat på webben använder beteendet från 1.4.2.
Till exempel:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- på 1.4.2 returnerar en lista som innehåller elementen 1, 2, 3
- på 1.5.0+ returnerar en lista som innehåller matrisen spam
I många fall borde det vara lätt att upptäcka, men ibland kan det smita obemärkt:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
948
3
I ditt exempel beror det på att du inte kan ha en lista av en primitiv typ. Med andra ord är
List
inte möjligt.Du kan dock ha en
List
med hjälp av klassenInteger
som omsluter den primitiva typenint
. Konvertera din array till enList
med hjälp av verktygsmetodenArrays.asList
.Se den här kod som körs live på IdeOne.com.
Problemet är att varargs infördes i Java5 och tyvärr blev även
Arrays.asList()
överbelastad med en vararg-version. SåArrays.asList(spam)
tolkas av Java5-kompilatorn som en vararg-parameter för int-arrays.Det här problemet förklaras närmare i Effective Java 2nd Ed., kapitel 7, punkt 42.
du måste kasta in i en matris