Array mit Listen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

ich versuche grade eine Array zu deffinieren, der 13 Listen (oder ArrayLists) enthält. Bin aber am verzweifeln!
Hab folgendes versucht:
Code:
static public ArrayList<String>[] data_einz = new ArrayList[13];
Wenn ich dann versucht auf einer der ArrayLists zuzugreifen gibt er aber ne NullPointerException.

Was ist falsch?
 
Mit deinem Code reservierst du nur Speicher für das Array (und die Elemente werden mit null initialisiert).
Code:
for(int i=0;i<data_ein.length;i++)
{
data_einz[i] = new ArrayList<String>();
}

So hast du dann auch Objekte im Array
 
Insgesamt müsste das also dann so aussehen:?
Code:
	static public ArrayList<String>[] data_einz = new ArrayList<String>[13];
	for(int i=0; i<13; i++)
		data_einz[i] = new ArrayList<String>;
Fehler zur Zeile 1: Cannot create a generic array of ArrayList<String> und ein Syntax Error
Fehler bei der Schleife: Syntax error on token(s), misplaced construct(s)

Ich verstehs net°!!!!
 
wieso schreibst du
Code:
for(int i=0; i<13; i++) 
      data_einz[i] = new ArrayList<String>;
wenn der korrekte Code
Code:
for(int i=0;i<data_ein.length;i++)  { 
data_einz[i] = new ArrayList<String>(); 
}
bereits gepostet wurde? 😉

ob data_ein.length oder 13 ist weniger relevant, data_ein.length ist aber besser, das musst du zugeben,

das Weglassen der Klammern ist ein ganz kritische Fehler-Quelle,
das solltest du dir auch bei simpelsten Code-Beispielen nicht angewöhnen..
(in diesem Fall nicht die Fehlerursache),

und warum nun die Fehlermeldung auftritt verrate ich nicht wenn du einfach nur deine zwei Zeilen mit den gegebenen korrekten drei Zeilen vegleichen musst 😉

--------

public ArrayList<String>[] data_einz = new ArrayList<String>[13];

geht ganz einfach in Java nicht,
da musst du dich mit

public ArrayList<String>[] data_einz = new ArrayList<String>[13];


begnügen, was bis auf eine eventuelle Compiler-Warnmeldung das gleiche tut

edit:
upps: public ArrayList<String>[] data_einz = new ArrayList[13];
 
Ich glaub ich bin eifach zu blöd!
Ok, den einen Fehler hab ich endlich (ich hatte die Schleicfe versehentlich außerhalb aller Funktionen - also im Classen-Rumpf)
Aber bei Initialisierung harkt es immer noch!!!
Folgendes Hab ich direkt zu Beginn der Klasse:
Code:
static public ArrayList<String>[] data_einz;
Und dann am Anfang meiner Main-Fkt:
Code:
data_einz = new ArrayList<String>[13];
Hier entspteht folgender Fehler:
Cannot create a generic array of ArrayList<String>
(Der gleiche Fehler tritt auf, wenn ich die UInitialisierung direkt hinter die Deffinition mache)

Ich hoffe der Fehler ist nicht zu einfach!
 
Anonymous hat gesagt.:
Ich hoffe der Fehler ist nicht zu einfach!

Wie man's nimmt - eigentlich ist es wirklich recht einfach: wie die Fehlermeldung - und auch Slaters Post - besagt, kann man in Java schlichtweg keine generischen Arrays anlegen.

Also lebst Du entweder mit einem nicht-typsicheren Array:
Code:
ArrayList[] data_einz = new ArrayList();
, oder Du stellst von Array auf eine Collection um:
Code:
ArrayList<ArrayList<String>> data_einz = new ArrayList<ArrayList<String>>();
for ( int i=0; i<13; i++) data_einz.add( new ArrayList<String>());
 
Jetzt steh' ich aber auch auf dem Schlauch!

Wieso ist es denn nicht möglich
Code:
ArrayList<String>[] strArrays = new ArrayList<String>[13];
zu definieren? :shock:

Was spricht da denn dagegen? ???:L :### ???:L
 
Also "ArrayList<String> [] arr = new ArrayList[13];" nimmt mein Compiler noch entgegen (mit einer Warnung zur Typsicherheit). Komisch, dass man generische Arrays deklarieren, aber nicht definieren kann! Habe ich allerdings auch noch nie gebraucht.
Wieder was gelernt!
 
Kola hat gesagt.:
Komisch, dass man generische Arrays deklarieren, aber nicht definieren kann! Habe ich allerdings auch noch nie gebraucht.
Wieder was gelernt!

Ich erst sobald ich weiß warum das (scheinbar(*)) so ist. :x



(*) Nein, nein! Ich habe scheinbar mit voller Absicht geschrieben...
 
Eine Begründung für die Nichtunterstützung generischer Arrays findet sich hier (im Abschnitt "More covariance troubles").
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben