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 cannot be cast to project.LLNode

4

1 回答 1

1

我想到了三个选项:

首先,将与List<String>

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

这样Node就不再需要了。

或者,您的第二个选择:您可以保持您实施和使用的方式List<LLNode<String>>

或者最后,如果您同时需要 useNode和 thisList<String>我认为这是您的需要(从问题中不清楚),并且使用Nodes 仅在内部使用第一个选项,如果不可能,请更清楚您的需求,我会尽力帮助你。

问候。

于 2012-11-07T17:34:30.823 回答