Erstellung des Arrays
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Blatt 10 EA 1
Hallo,
abgesehen davon, dass ich glaube, die gesamte Aufgabe und das Prinizip hinter den Streutabellen grundsätzlich verstanden zu haben, scheitert mein Code natürlich gleich an der 1. Teilaufgabe. Und zwar: Wie kann ich die buckets erstellen? Folgender Code funktioniert nicht wegen einer ClassCastException:
buckets = (Pair<K, V>[]) new Object[capacity];
Mittlerweile habe ich rausgefunden, dass das daran liegt, dass Object von keinem Parameter abhängig ist. Wie kann ich das aber reparieren? In den Folien zu Thmen 10/11 habe ich nichts dazu gefunden.
Vielen Dank im Voraus!
buckets = new Pair[newCapacity];
Ah, danke! Die einfachen Methoden sind oft die besten Ist das dann immer so, dass ich einfach die Parameter erstmal weglassen kann?
Generische Arrays sind etwas seltsam. Grundsätzlich müssen generische Arrays als Arrays ihres erased types (https://docs.oracle.com/javase/tutorial/java/generics/erasure.html) initialisiert werden, also hier z.B. ohne Typ-Parameter. So erstellt man Arrays eines Typ-Parameters:
class A<T extends B> {
T[] field = (T[]) new B[1];
}
Generische arrays sind allgemein sehr seltsam und nicht leicht zu verstehen, weshalb man in 99% der Fälle statt dessen ArrayList verwenden sollte.
Den Eindruck habe ich langsam nach einem in den Sand gesetzten Wochenende auch :nuts: :rolleyes:
…was vor allem daran liegt, dass Generics in Java erst später ergänzt wurden und auf den bestehenden Sprachkoloss draufgesetzt werden mussten, was leider nur minder gut umgesetzt wurde.