LinkedList tömbben

Fórumok

Sziasztok, szeretnék egy tömbben LinkedList-eket tárolni.

többféle megoldás is született (1. megoldás forrása):

// 1, típuskényszerítés, működik de úgy érzem kell legyen jobb:
LinkedList<elem>[] elemek_szintenkent = (LinkedList<elem>[]) new LinkedList[100];

// 2 egyszerű, de warning-ot ad, mert a jobboldalt nem
// adtam meg az <elem> típust, és ha megadom nem fordul le
LinkedList<elem>[] elemek_szintenkent = new LinkedList [100];

Hogy kell ezt elegánsan megoldani?

A problémát nem szeretném kikerülni/másképp megoldani, tehát kifejezetten tömbbe akarok láncolt listákat belerakni, és nem más adatszerkezettel megoldani a feladatot.

Köszönöm, Dio

Hozzászólások

A java tombok tartalmaznak tipusinformaciot ("reified"-ak) [JLS, 4.7], vagyis tudjak es kikenyszeritik a tombelem tipusat. A generic-ekre ez nem igaz (nincs reification) mivel a tipusinformacio elvesz forditaskor (type erasure) es nem erheto el futasidoben.
Ebbol kovetkezik, hogy nem hozhato letre generikus tipusokbol allo tomb, pl. LinkedList<elem>[], ezert nem fordul le a 2. megoldas, ha megadod az elemtipust.
A generikus tipusok es a tombok kozotti alapveto kulonbseg miatt ezek keverese nem erdemenyez tiszta kodot. A tomb kovarians, a generikus tipusok invariansak.
Idevago olvasmany: Effective Java, Item 25: Prefer lists to arrays. Ahogy Joshua Bloch is is tanacsolja: tomb helyett hasznalj listat. Mivel ezt nem szeretned, marad az 1. megoldasod.