有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用compareTo()和泛型以及LinkedList和sort时遇到java问题

我试图创建一个SortedList类来扩展LinkedList类,两者之间的唯一区别是SortedList有一个方法来按顺序插入它所持有的内容

public class SortedList<T> extends LinkedList<T> implements Iterable<T> {

    // Class variables and constructor

    public void insert(T objectToAdd){
    Node<T> newNode = new Node<>(objectToAdd);
    Node<T> currentNode = head.getNext(); // Head node is a single sentinel node, so we always need to start comparing from its next.

    if (objectToAdd.compareTo(currentNode.getPayload()) == -1){
    // Insert and setup node links.

    } else if (... rest of here){

    }
}

我遇到的问题是使用比较器时出现以下错误:

http://puu.sh/vxKxv/c9ee91d54c.png

下面是节点类

public class Node<T>{

    // Class Variables
    private final T data;
    public int index;
    private Node<T> next;
    private Node<T> prev;

    public Node(T data) {
        this.payload = payload;
        this.next = null;
        this.prev = null;
    }

    public void setNext(Node<T> newNode) {
        this.next = newNode;
    }

    public void setPrev(Node<T> newNode) {
        this.prev = newNode;
    }

    public Node<T> getNext() {
        return this.next;
    }

    public Node<T> getPrev() {
        return this.prev;
    }

    public T getData() {
        return this.data;
    }
}

如果你需要我发布任何其他课程,请告诉我

这件事耽搁了一段时间,有人能帮忙吗


共 (1) 个答案

  1. # 1 楼答案

    T不是一个具体的类型,因此编译器只知道它在对象类中定义了对象。如果有人制作SortedList,它将没有compareTo方法,因此无法工作。您需要确保T将包含compareTo方法。最简单的方法是

    public class SortedList<T extends Comparable> extends LinkedList<T> implements Iterable<T> { ... }
    

    我也认为最好检查一下

    if (objectToAdd.compareTo(currentNode.getPayload()) < 0) { ... }
    

    因为它给了你反对添加的关系<;当前节点。获取有效负载()。同样,可比接口也不能保证它是-1。它说:

    @return a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.