用于 LinkedList 的 Java compareTo

标签 java linked-list comparable

public class Node<E> {
    private E data;
    private Node<E> next;
    public Node<E>(){
        next = null;
    }
    public Node(E dataIn){
    data = dataIn;
    }       
}

///

class LinkedList<E>{
    public void insert(E dataIn){
            if(ctr != 0){
                Node<E> temp = new Node<E>(dataIn);
                Node<E> cursor = head;
                Node<E> prev = cursor;
                while(cursor != null && cursor.data.compareTo(dataIn) < 0){
                        prev = cursor;
                        cursor = cursor.next;
                }
                prev.next = temp;
                temp.next = cursor;
             }
             else
                add(dataIn);
             ++ctr;  
   }
}

在我的插入函数中,我如何让 Java 知道 cursor.data 与 dataIn 的类型相同?(假设它们都是整数)抱歉,对于这个愚蠢的问题,我深表歉意。我是一个菜鸟,我不知道在哪里写'compareTo'函数,因为我使用的是 Integer ,而不是自定义数据类型。所以,当我编译代码时,我得到了这个错误

required: E#1
found: no arguments
reason: actual and formal argument lists differ in length
where E#1,E#2 are type-variables:
E#1 extends Object declared in class LinkedList
E#2 extends Object declared in class Node
LinkedList.java:34: error: cannot find symbol
        while(cursor != null && cursor.data.compareTo(dataIn) < 0){
                                           ^
symbol:   method compareTo(E#1)
location: variable data of type E#2
where E#1,E#2 are type-variables:
E#1 extends Object declared in class LinkedList
E#2 extends Object declared in class Node

预先感谢您的关注!

最佳答案

按如下方式定义列表类

public class LinkedList<E extends Comparable<E>> {

    private static class Node<E> {

并确保 Node 类是嵌套静态的(在这种情况下可以是 privatepackage-private)。之后,就可以将任何实现了 Comparable 的类型添加到链表中。

关于用于 LinkedList 的 Java compareTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52441379/

相关文章:

java - 如果线程安全不是问题,Java 中的 ArrayList 与 Vectors

java - 无法删除循环链表中的第一个节点

java - 具有可比接口(interface)的 equals 方法契约

java - 从文本文件中读取行并将它们排序到链接列表中java

java - 最近有关 JVM 的书籍?

Java 注释 - 如何创建数组?

java - Java Android 多类图

java - 如何确定链表的方向

c++ - 创建链表插入功能但代码没有运行

ruby - 理解可比较的mixin和可枚举的mixin