Blatt 10 EA 1

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.

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];

1 Like

Ah, danke! Die einfachen Methoden sind oft die besten :wink: 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.