Hallo zusammen,
unser Dozent in Algorithmen & Datenstrukturen hat uns die Aufgabe gegegeben, ein Testprogramm für offenes Hashing (mit direkter und separater Verkettung) und geschlossenes Hashing (lineares Sondieren, quadratisches Sondieren und Double Hashing) zu implementieren.
Ich habe die beiden abstrakten Klassen HashTable und Bucket, davon erben jeweils DirectChainedHasTable und DirectChainBucket.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| package hashing;
import java.util.ArrayList;
public abstract class HashTable { protected ArrayList<Bucket> bucketList; public int getLength() { return this.bucketList.size(); }
} |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| package hashing;
public abstract class Bucket { protected boolean occupied; protected int id; public abstract String toString();
} |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| package hashing;
import java.util.ArrayList;
public class DirectChainedBucket extends Bucket {
private ArrayList<SuperString> objectList;
@Override public String toString() { return "DirectChainedBucket, length: " + this.objectList.size(); } } |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| package hashing;
import java.util.ArrayList;
public class DirectChainedHashTable extends HashTable {
public DirectChainedHashTable() { this.bucketList = new ArrayList<DirectChainedBucket>(); } } |
Eclipse meldet in der Klasse DirectChainedHashTable in der Instanziierung der ArrayList folgendes:
Description Resource Path Location Type
Type mismatch: cannot convert from ArrayList<DirectChainedBucket> to ArrayList<Bucket> DirectChainedHashTable.java Hashing/src/hashing line 8 Java Problem
Ich dachte bis jetzt immer, wenn ich irgendwo ein Feld als Objekt von einer Mutterklasse angeben, dass ich dieses Feld immer auch als ein Objekt einer Tochterklasse instanziieren könnte.
Woran liegt der Fehler?
Grüße aus Karlsruhe
Marco
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot