Pretvarjanje polja v seznam v Javi
Kako v Javi pretvorim polje v seznam?
Uporabil sem Arrays.asList()
, vendar se je obnašanje (in podpis) nekako spremenilo od Java SE 1.4.2 (dokumenti so zdaj v arhivu) do 8 in večina fragmentov, ki sem jih našel na spletu, uporablja obnašanje iz 1.4.2.
Na primer:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- na 1.4.2 vrne seznam, ki vsebuje elemente 1, 2, 3
- v različici 1.5.0+ vrne seznam, ki vsebuje polje spam
V mnogih primerih bi ga bilo mogoče zlahka odkriti, vendar se včasih lahko izmuzne neopaženo:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
948
3
V vašem primeru zato, ker ne morete imeti seznama primitivne vrste. Z drugimi besedami,
List
ni mogoč.Lahko pa imate
List
z uporabo razredaInteger
, ki vsebuje primitivni tipint
. Svoje polje pretvorite vList
z uporabno metodoArrays.asList
.Oglejte si to kodo, ki je bila v živo izvedena na IdeOne.com.
Težava je v tem, da so bili varargs uvedeni v Javi5 in na žalost je bil tudi
Arrays.asList()
preobremenjen z različico vararg. Tako prevajalnik Java5 razumeArrays.asList(spam)
kot parameter vararg za polja int.Ta težava je podrobneje razložena v knjigi Effective Java 2nd Ed., poglavje 7, točka 42.
morate oddati v polje