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 楼答案
你(大概是因为你的代码片段太短)对T没有限制,所以T可以是任何东西。值得注意的是,它可能是,比如说,
InputStream
,这在本质上是不可比的。因此,不可能对其应用任何类型的“T的这个特定实例‘低于’这个T的另一个实例”操作,因为无法保证这个操作是合理的你需要让它有意义
在java中,这将是
Comparable
、或的工作,您将“我操作的对象类型”和“可以确定给定两个对象的代码,哪一个更低”的概念分开前者意味着你不想被束缚。你还把
next
的处理搞砸了。我两个都会修好的如果你想要另一个模型,那就有一个接受
Comparator<T>
的构造函数;有关一些示例,请参见例如TreeSet
的来源请注意
T extends Comparable<T>
意味着:T是某种类型,它实现了Comparable<T>
。换句话说,它是一种能够将自身与同类事物相比较的事物String
就是这样一种类型。Integer
也是如此。(整数实现Comparable<Integer>
;字符串实现Comparable<String>
)