/Java Dynamische 3 dim Arrays
isam
- programmiertechnik
Hej,
ich hoffe, dass ihr mir helfen könnt. Ich bin dabei erste Schritte mit Java zu machen, und zerbrech mir schon den ganzen morgen den Kopf, komme einer Lösung aber nicht wirklich näher weil sich die OOP wohl noch nicht hinreichend in mein Gehirn gebrannt hat.
Für eine sortierte Datenstruktur (bis zu 1.000.000 Elemente fom Typ int) benötige ich ein 3 dimensionales Feld welches folgende Kriterien erfüllen soll:
Die Länge der erste Dimension ist bekannt und beträgt N;
Die Länge der zweiten Dimension soll dynamisch sein, weil sie nur
Werte in der Größenordnung [0 .. 100] annimmt und wiederrum
Referenzen vom Typ TIntArrayList aus dem Paket gnu.trove
(JavaDoc:http://trove4j.sourceforge.net/javadocs)
aufnimmt;
Die Länge der dritten Dimension vom Typ TIntArrayList soll also auch
dynamisch sein. Anzahl der Elemente der zweiten mal dritten
Dimension beträgt wiederrum genau N.
Versucht habe ich das folgendermaßen:
private ArrayList[] v = new ArrayList[N];
for (int i = 0; i < N; i++)
v[i] = new ArrayList(1);
for(int i = 0; i < N; i++){
int z = 0, pl = 2;
do{
v[i].add(new TIntArrayList(1));
/*v[i].get(pl) = new TIntArrayList(1) klappt auch nicht, weil
"links keine Variable steht", weiß auch nicht wie ich da
v[i] überhaupt verlängern soll, also mit add(was?);
*/
for(int j = 0; j < N; j++){
if(/* */){
v[i].get(pl-1).add(j);
^^^ Da sagt mir der Compiler: methode
is undifined for this type of Object
z++;
}
}
pl++;
}while(z != N);
}
Also, so wirklich weiß ich net was ich probieren soll, dass das jetzt klappt. Und ich versteh nicht dass v[].get() offensichtlich keine Referenz vom Typ TIntArrayList ist.
Da nicht mal das funktionuckelt hab ich auch noch nicht versuchen können dann ein konkretes Element ansprechen zu können, ich hätte ja vermutet, dass es mit
v[i].get(pl).getQuick(j)
hätte gehen sollen, aber das wird wohl genauso wenig gehen.
Naja, ich weiß auch, dass das nicht umbedingt das richtige Forum ist, aber es ist das einzige in dem ich mich (wenn auch still aber sehr gerne) aufhalte.
Vielen Dank an alle
i.
Also, so wirklich weiß ich net was ich probieren soll, dass das jetzt klappt. Und ich versteh nicht dass v[].get() offensichtlich keine Referenz vom Typ TIntArrayList ist.
Nur kurz drübergeschaut, meine keinen einzigen TypeCast gesehen zu haben. Du hast zwar Objektreferenzen in Deinem Array, aber der Typ des Objekts ist bei der Benutzung der Referenz erst mal unbekannt. Den mußt Du schon explizit anfordern, wenn Du drauf zugreifst.
Hej,
Und ich versteh nicht dass v[].get() offensichtlich keine Referenz vom Typ TIntArrayList ist.
Nur kurz drübergeschaut, meine keinen einzigen TypeCast gesehen zu haben.
Habe mich erst unheimlich über die <IronieModus>ausführliche Antwort</IronieModus> gefreut gehabt, aber sie sollte tatsächlich die Lösung liefern:
((TIntArrayList) v[i].get(pl)).add(j); anstatt v[i].get(pl).add(j)
brachte Segen, Frieden und Glück ;-)
Daher ein großes Danke!
i.