有 Java 编程相关的问题?

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

java getMax()运算符“<”不能应用于<T>

我对链表和节点非常陌生,所以我完全停留在Java中的getMax()方法上

因此,我试图获得列表中的最大值,但我不能使用“<;”在我的假设陈述中,我应该用什么来代替呢?我需要做比较吗?但我不知道我会比较什么

这是我目前掌握的代码:

public T getMax()
    {
        T largestValue = null;
        Node<T> currNode = this.firstNode;
        while (currNode.next != null)
        {
            if(largestValue < currNode.next.data)


        }

共 (1) 个答案

  1. # 1 楼答案

    你(大概是因为你的代码片段太短)对T没有限制,所以T可以是任何东西。值得注意的是,它可能是,比如说,InputStream,这在本质上是不可比的。因此,不可能对其应用任何类型的“T的这个特定实例‘低于’这个T的另一个实例”操作,因为无法保证这个操作是合理的

    你需要让它有意义

    在java中,这将是Comparable的工作,您将“我操作的对象类型”和“可以确定给定两个对象的代码,哪一个更低”的概念分开

    前者意味着你不想被束缚。你还把next的处理搞砸了。我两个都会修好的

    public class MyClassThingie<T extends Comparable<T>> {
        public T getMax() {
            T largestValue = null;
            Node<T> currNode = this.firstNode;
            while (currNode != null) {
                if (largestValue == null || largestValue.compareTo(currNode.data) < 0) largestValue = currNode.data;
                currNode = currNode.next;
            }
            return largestValue;
            // you may want to spec out that your method returns null if there are 0 elements.
        }
    }
    

    如果你想要另一个模型,那就有一个接受Comparator<T>的构造函数;有关一些示例,请参见例如TreeSet的来源

    请注意T extends Comparable<T>意味着:T是某种类型,它实现了Comparable<T>。换句话说,它是一种能够将自身与同类事物相比较的事物String就是这样一种类型。Integer也是如此。(整数实现Comparable<Integer>;字符串实现Comparable<String>