2

だから私は一般的なリンクリストとスキップリストのプログラムを書こうとしています。また、将来の使用のために、インターフェイスとスーパークラスを使用したかったのですが、すべてのジェネリック型とすべてを連携させる方法がわかりません。

これは私が今持っているものの基本的な考え方です:

すべてが拡張される私のリストADTとノードクラス:

public class Node<K extends Comparable<K>> {
    K key;
    Object data;
    ...
}

public interface List<T> {
    public void insert(T value);
    public void delete(T value);
}

リンクされたリストの例:

public class LList<T extends Comparable<T>> implements List<LLNode<T>>
public class LLNode<K extends Comparable<K>> extends Node<K>

私はこれを正しく行っていますか?

編集:より具体的には、このクラスの非常に基本的なインスタンスを作成しようとすると、問題が発生します...

List<String> linkedList = new LList<String>();
List[] lists = {linkedList};
sets[0].insert("cookie");

これにより、コンパイラ エラーが発生します。java.lang.String を project.LLNode にキャストできません。

4

1 に答える 1

1

私は3つのオプションで考えました:

まず、以下で動作しList<String>ます:

    public class LList<T extends Comparable<T>> implements List<T>
    {
        @Override
        public void insert(T value)
        ...
    }

この方法では、それ以上Nodeは必要ありません。

または2 番目のオプション: 実装して使用する方法を維持できます。List<LLNode<String>>

または最後にNode、使用とこれの両方が必要な場合は、それが必要List<String>であると思います(質問からは明らかではありませんでした)。Node最初のオプションを使用して s を内部的にのみ使用します。それが不可能な場合は、ニーズを明確にしてください。あなたを助けようとします。

よろしく。

于 2012-11-07T17:34:30.823 に答える