我如何在内部找到单个链表中的最大值

时间:2016-01-15 02:56:40

标签: java

linked list

的代码
  class Link 
{
    public Object data;
    public Link next;

    public Link(Object o)
    {
        this.data = o;
        this.next = null;
    }

    public String toString()
    {
        return data.toString();
    }
}

class LinkList {
    private Link head;

    public LinkList()
    {
        head = null;
    }

我创建的方法

public Object max(){
           Link current=head;
            Comparable max=(Comparable)(head.data);
            while(current!=null){
                if(max.compareTo(current.data)==-1){
                    max=(Comparable)current.data;

                }
                current=current.next;

            }
            return max;

        }

问题是它一直在发布此错误 线程“main”中的异常java.lang.ClassCastException:java.lang.Integer无法强制转换为Comparable

我知道你会在数字的情况下获得最大值,所以你可以将它转换为int但是我试图让方法使用Comparable 任何想法??

1 个答案:

答案 0 :(得分:1)

您可以将Link类属性数据类型更改为其他实现Comparable接口的Class。喜欢我的代码,并覆盖compareTo方法:

class Link {
    public MyBean data;
    public Link next;

    public Link(MyBean o) {
        this.data = o;
        this.next = null;
    }

    public String toString() {
        return data.toString();
    }
}

class MyBean implements Comparable<MyBean>{
    String name;
    // ... other properties


    @Override
    public int compareTo(MyBean o) {

        return System.identityHashCode(this.name) - System.identityHashCode(o);
    }
}