ArrayLists initialisieren

Status
Nicht offen für weitere Antworten.

JavAlex

Mitglied
Hey,

ich muss bis nächste Woche ein kleines Java-Programm schreiben, hab es auch fast fertig, nur es tauchen noch folgende beiden Fehlermeldungen auf:
Java:
Buckets.java:13:  expected
    ArrayList > B = new ArrayList();
              ^

Liste.java:11:  expected
    ArrayList  L = new ArrayList();
              ^
2 errors

Die entsprechenden beiden Zeilen im Quelltext lauten:
Java:
Buckets:13:   ArrayList <ArrayList <Knoten>> B = new ArrayList();
Liste:11:        ArrayList <Knoten> L = new ArrayList();

Ich kann absolut nicht verstehen, was an diesen beiden Zeilen falsch sein soll :(
Es werden ja ganz normal zwei ArrayLists initialisiert. Und Elemente vom Typ Knoten sind durch die Klasse "Knoten.java" mit einen ganz normalen Konstruktor definiert.

Wäre super, wenn mir jemand von euch helfen könnte.

Vielen Dank schon mal!
 

Schandro

Top Contributor
villeicht benutzt du einen Compiler unter Version 5, damals gab es Generics noch nicht.

Und Elemente vom Typ Knoten sind durch die Klasse "Knoten.java" mit einen ganz normalen Konstruktor definiert.
Nur so zum Verständniss:
Es ist an dieser Stelle des Codes völlig egal welche Konstruktoren der Typ hat, ob er welche hat, oder ob es ein Interface ist welches naturgemäß keine Konstruktoren haben kann oder sonstwas. Es kommt nur drauf an das es irgendein existierender "Typ" ist.
 

Schandro

Top Contributor
ne, ich hab damit meinen doppelpost innerhalb dieses Threads gemeint, ich hab den 2. editiert damit nicht zweimal dasselbe hier steht.

Lags jetzt an der Compiler Version?
 

JavAlex

Mitglied
Achso... oops..

Danke für deine schnelle Antwort.

An der Compiler-Version dürfte es eigentlich nicht liegen. Ich hab Java 5 auf meinem PC, da kann ich es auch einwandfrei kompilieren. Ich muss es aber bei der Abgabe dann auf einen Server hochladen. Und da meckert der Compiler.

Uns wurde allerdings gesagt, dass wir Java 5 benutzen dürfen, also müsste auf dem Server eigentlich auch Java 5 installiert sein.
 

Marco13

Top Contributor
Ganz pragmatisch: Schreib' das Programm den Vorgaben entsprechend, mit Java 5, und compiliere es lokal bei dir auf dem PC. Wenn es fehlerfrei compiliert, schick' es zum Server. Wenn der Server dann meckert, hat der Server einen Hau - dann schick' dem Verantwortlichen eine Mail, mit deinem Programm als Anhang, und schreib: "Geht lokal, Server meckert -> Server blöd"
 

JavAlex

Mitglied
Danke schon mal für eure Hilfe!

Hmm... ich muss auf jeden Fall festlegen, dass die ArrayList nur Knoten enthält, sonst klappt der Rest des Programms nicht. Gibts denn noch eine andere Möglichkeit außer Generics, um das festzulegen? Irgendwie muss es ja auch vor Java 5 schon möglich gewesen sein, solche Probleme zu lösen. Vielleicht irgendwie über einen Punktoperator? Sowas wie
Java:
Liste.type()=Knoten;
oder so?
 

Marco13

Top Contributor
Ne, casten:

ArrayList list = new ArrayList();
list.add(new Knoten());
...
Knoten knoten = (Knoten)list.get(0);


Das unpraktische dabei ist, dass das leichter zu Fehlern führt, wenn man sich in bezug auf den Inhelt der Liste mal irrt:

list.add("Hallo");
Knoten knoten = (Knoten)list.get(1); // Erwartet Knoten, findet String: -> ClassCastException!
 

Schandro

Top Contributor
Nö, kannst du nicht (außer du machst ne eigene Klasse "ArrayListOnlyWithKnotenElements" in der "Knoten " als Typ aller Elemente hard reincodiert ist, das wäre aber ziemlich umständlich und unnötig)

Ansonsten musst du halt bei jeden auslesen der List kontrollieren ob das Object was du bekommen hast wirklich ein Knoten ist und dementsprechend casten.... (siehe Marco13 's Post)
 

JavAlex

Mitglied
@Marco13: Du hast ja eigentlich vollkommen recht. Nur dann heißt es von den Verantwortlichen "Server nicht blöd, Programm blöd, hätte ich anders schreiben müssen
-> Note schlecht" :(
 

Marco13

Top Contributor
Das schöne ist, dass es (bei Mathematik und Informatik und speziell) beim Programmieren da nicht so viel Interpretationsspielraum gibt.

ArrayList<ArrayList<Knoten>> K = new ArrayList<ArrayList<Knoten>>();

ist gültiger Java-Code. Da gibt's kein gut, mittel, besser, schöner, schlechter - nur RICHTIG oder FALSCH. (Und wenn es falsch sein sollte, hättest du hier irgendwelche Einschränkungen oder Anforderungen noch nicht genannt - vielleicht verbieten sie ja Variablennamen, die nur aus einen Buchstaben bestehen - das muss dann aber irgendwo definiert sein!). Und ... wenn du glaubst, dass die Leute, die diesen Server geschrieben haben, keine Fehler machen ... huiui... ;)


EDIT: Naja...
List<List<Knoten>> K = new ArrayList<ArrayList<Knoten>>();
wäre natürlich DOCH "schöner", aber darum geht's ja erstmal nicht ;)
 
Zuletzt bearbeitet:

JavAlex

Mitglied
Casten hatte ich vor den Generics mal versucht. Hab dunkel in Erinnerung, dass das auch zu irgendeinem Problem geführt hat, weshalb ich dann zu den Generics gewechselt bin. Ich war mir damals auch nicht sicher, ob man etwas zu einem selbstdefinierten Datentyp "Knoten" casten kann, oder ob man nur etwas zu fest vorgegebenen Datentypen, wie int, String, usw., casten kann. Aber ich glaub, ich werd das morgen in aller Ruhe nochmal mit casten versuchen! Danke!
 

Marco13

Top Contributor
Ich würde dir aber empfehlen (bevor du da jetzt unnötig Zeit reinsteckst, und irgendwas durch casts "häßlicher" machst, als es mit Generics sein könnte) mal mit einer Mail anzufragen.
 

JavAlex

Mitglied
Stimmt, einerseits ist es schön, dass man in der Mathematik und Informatik genau sagen kann, ob etwas richtig oder falsch ist.

Andererseits ist man deshalb auch gezwungen, manchmal stundenlang seine Fehler zu suchen und sich zu fragen, warum das Programm nicht läuft. Germanisten z.B. haben es da viel einfacher, wenn sie einen Aufsatz schreiben oder irgendein Buch interpretieren... so ein Aufsatz ist dann zumindest "ein bisschen richtig" und sie müssen nicht stundenlang Fehler suchen... oder Interpretationen sind weder richtig noch falsch... tja.... ;)
Aber nichts gegen Germanisten ;)
 
Zuletzt bearbeitet:

JavAlex

Mitglied
Ja.. hab jetzt nochmal eine Mail geschrieben.

Mit Casts wird das ganze ziemlich wirklich unübersichtlich. In der Klasse Knoten gibt es z.B. eine int-Variable knotennummer.
Und in ArrayLists kann ich dann einfach auf
Java:
int n = List.get(i).knotennummer;
zugreifen.
Wenn ich das ganze caste, müsste ich jeden Knoten, auf dessen Knotennummer ich zugreifen möchte, wahrscheinlich erst zwischenspeichern, oder?
Java:
Knoten K = (Knoten)List.get(i);
n = K.knotennummer;
 

Schandro

Top Contributor
n = ((Knoten)List.get(i)).knotennummer;

geht auch.

Warum benutzt du bei der Klasse Knoten den keine getter/setter?
 

JavAlex

Mitglied
EDIT: Naja...
List<List<Knoten>> K = new ArrayList<ArrayList<Knoten>>();
wäre natürlich DOCH "schöner", aber darum geht's ja erstmal nicht ;)

Hatte ich auch zuerst, aber das hätte dann bedeutet: noch mehr spitze Klammern und damit noch mehr Fehlermeldungen ;)
So konnte ich mich zumindest schon mal von 7 Fehlermeldungen auf 2 reduzieren.

Hatte am Anfang auch sowas wie
Java:
@SuppressWarning("unchecked")
aber leider war das @-Zeichen für den Server auch ein unbekanntes ASCII-Zeichen, deshalb musste ich das auch rausnehmen.
 

JavAlex

Mitglied
Hmm... joah... getter und setter wären auch eine Überlegung wert. Hatte ich bisher noch gar nicht drüber nachgedacht, weil die Knotennummer nur einmal gesetzt werden muss. Und das mach ich halt direkt beim Initialisieren. Und später möchte ich die im Grunde nur noch abfragen.

Aber getter/setter ist eigentlich eine gute Idee.
 

Schandro

Top Contributor
Hatte ich auch zuerst, aber das hätte dann bedeutet: noch mehr spitze Klammern und damit noch mehr Fehlermeldungen
So konnte ich mich zumindest schon mal von 7 Fehlermeldungen auf 2 reduzieren.
Ist doch völlig egal ob du 7 oder 2 Fehlermeldungen des selben Typs hast, wenn du sie trotzdem nicht komplett abstellen kannst.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
lizamcoden dateizugriff, arraylists Java Basics - Anfänger-Themen 15
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
C Anzahl ArrayLists unbekannt Java Basics - Anfänger-Themen 4
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
HoT verschiedene ArrayLists mit ähnlichem Namen in for-Schleife aufrufen Java Basics - Anfänger-Themen 3
J Replace mit Hilfe von ArrayLists Java Basics - Anfänger-Themen 6
S Vergleich zweier ArrayLists mit Ausgabe an dritte ArrayList Java Basics - Anfänger-Themen 5
M BildLauf - ArrayLists - Denkanstoß Java Basics - Anfänger-Themen 2
I Daten aus Arraylists in eine Tabelle übertragen Java Basics - Anfänger-Themen 2
B ArrayLists in JCombobox Java Basics - Anfänger-Themen 10
I Mehrere ArrayLists mit einer for( : ) Schleife auf Inhalt prüfen Java Basics - Anfänger-Themen 6
T add-Methode für verschachtelte ArrayLists Java Basics - Anfänger-Themen 10
W ArrayLists: Verständnisproblem bei remove() Java Basics - Anfänger-Themen 2
T Probleme mit ArrayList, in der Objekte gespeichert sind, die ArrayLists enthalten Java Basics - Anfänger-Themen 2
J 100 arraylists mit for-schleife erstellen und in hashmap einbinden Java Basics - Anfänger-Themen 11
F Argh: hab ArrayList von ArrayLists, Konstruktor will ArrayLists Java Basics - Anfänger-Themen 9
J Hash-Maps / ArrayLists testen Java Basics - Anfänger-Themen 12
G ArrayLists, HashMaps, etc. vereinigen. Java Basics - Anfänger-Themen 6
J Primzahlen errechnen.ArrayLists abgleichen Java Basics - Anfänger-Themen 2
U ArrayLists und Casten Java Basics - Anfänger-Themen 2
T Standardkonstruktor, Attribute initialisieren Java Basics - Anfänger-Themen 5
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
J Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen? Java Basics - Anfänger-Themen 21
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
X Attribut initialisieren Java Basics - Anfänger-Themen 1
M Deklarieren und Initialisieren von Arrays Java Basics - Anfänger-Themen 3
Dawinartor Erste Schritte Statisch, Initialisieren, Deklarieren, ... Java Basics - Anfänger-Themen 1
L Variable in If-Statement initialisieren Java Basics - Anfänger-Themen 4
C Verschachteltes Array initialisieren Java Basics - Anfänger-Themen 6
D Vektoren Initialisieren Java Basics - Anfänger-Themen 1
D Boolean Array initialisieren Java Basics - Anfänger-Themen 4
T Mehrdimensionale Arrays mit geschachtelter for-Schleife initialisieren Java Basics - Anfänger-Themen 14
J Array ausserhalb der Methode initialisieren Java Basics - Anfänger-Themen 4
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
M Java Arrays mit Werten initialisieren Java Basics - Anfänger-Themen 3
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
V Tastatur initialisieren JFrame Probleme Java Basics - Anfänger-Themen 6
L Arrays richtig initialisieren Java Basics - Anfänger-Themen 1
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
B Rekursion - Variable initialisieren Java Basics - Anfänger-Themen 2
T Variable deklarieren, ohne zu initialisieren... Java Basics - Anfänger-Themen 3
M Objekt Array an konstruktor übergeben und Initialisieren Java Basics - Anfänger-Themen 1
K Objekte im Konstruktor initialisieren Java Basics - Anfänger-Themen 3
CyberFish initialisieren, obwohl es gemacht wurde! Bitte um Hilfe Java Basics - Anfänger-Themen 10
K Array mit Double initialisieren Java Basics - Anfänger-Themen 10
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
J StringBuilder initialisieren und Löschbefehl Java Basics - Anfänger-Themen 20
M Mehrdimensionales Array initialisieren Java Basics - Anfänger-Themen 3
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
R Sehr einfache möglichkeit ArrayList oder Array zu initialisieren? Java Basics - Anfänger-Themen 8
N Mit Kontrukor der Oberklasse lokale Variable initialisieren Java Basics - Anfänger-Themen 2
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
S Mehrdimensionales Char-Array initialisieren Java Basics - Anfänger-Themen 17
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19
C Zweidimensionales String Array initialisieren Java Basics - Anfänger-Themen 2
D List<String[]> initialisieren Java Basics - Anfänger-Themen 4
D Problem mit Objekten Vererbung deklarieren initialisieren usw Java Basics - Anfänger-Themen 12
B Arrays initialisieren Java Basics - Anfänger-Themen 2
S Variable Initialisieren, aber wo? Java Basics - Anfänger-Themen 36
Y Array initialisieren, nach der Abfrage? Java Basics - Anfänger-Themen 3
K Datentypen Globale Variable direkt initialisieren oder im Konstruktor? Java Basics - Anfänger-Themen 13
N ARRAY initialisieren Java Basics - Anfänger-Themen 5
T Mehrere Variablen gleichzeitig initialisieren Java Basics - Anfänger-Themen 2
F Dreidimensionales Array? Wie initialisieren? Java Basics - Anfänger-Themen 5
Forlan OutputStream Initialisieren Java Basics - Anfänger-Themen 4
Ham Verhalten beim Initialisieren von Arrays Java Basics - Anfänger-Themen 16
N Initialisieren einer zufälligen Matrix Java Basics - Anfänger-Themen 12
A log4j - wie kann ich im Quellcode initialisieren statt in der properties-Datei? Java Basics - Anfänger-Themen 2
G Variablen initialisieren vor super() Java Basics - Anfänger-Themen 8
S Array initialisieren Java Basics - Anfänger-Themen 8
MQue ArrayList initialisieren Java Basics - Anfänger-Themen 17
G GUI in main Initialisieren Java Basics - Anfänger-Themen 15
M 2d string array initialisieren ohne neu String Java Basics - Anfänger-Themen 3
B Variable mit Methode initialisieren Java Basics - Anfänger-Themen 11
A char variable deklarieren und nicht initialisieren Java Basics - Anfänger-Themen 10
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
W Feld von boolean in main initialisieren. Java Basics - Anfänger-Themen 4
G Konstante im Konstruktur initialisieren Java Basics - Anfänger-Themen 8
G ArrayList initialisieren Java Basics - Anfänger-Themen 25
M Zweidimensionales String-Array initialisieren Java Basics - Anfänger-Themen 6
O String global initialisieren Java Basics - Anfänger-Themen 5
B ArrayList mit Startwerten initialisieren Java Basics - Anfänger-Themen 8
V Zweidimensionalen Array initialisieren Java Basics - Anfänger-Themen 3
G String Array initialisieren Java Basics - Anfänger-Themen 4
R Klassenvariable initialisieren Java Basics - Anfänger-Themen 9
A String als Nullstring initialisieren Java Basics - Anfänger-Themen 2
F double[][] initialisieren Java Basics - Anfänger-Themen 9
G Arrays initialisieren Java Basics - Anfänger-Themen 8
M Wann ist initialisieren sinnvoll? Java Basics - Anfänger-Themen 4
G Wie Array initialisieren? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben