gpt4 book ai didi

java - 删除双向链表Java中具有最小值的泛型节点

转载 作者:行者123 更新时间:2023-11-30 12:06:55 25 4
gpt4 key购买 nike

这是我的 getSmallest() 方法的代码:

public T getSmallest() throws EmptyListException
{
if(isEmpty())
throw new EmptyListException("List is empty");


DLNode<T> current = front;
DLNode<T> minNode = current;
int minimum = current.getValue();

while(current.getNext() != null)
{
if(minimum > current.getValue())
{
minNode = current;
minimum = current.getValue();
}

current = current.getNext();
}

return current.getData();
}

每个节点都有一个名为 dataItem 的字符串和一个与之相关联的名为 value 的整数。我想查看哪个节点的值最小,然后返回 dataItem。问题是我陷入了 while 循环,不知道为什么。我将如何正确遍历列表,以免陷入 while 循环并可以比较最小值?

最佳答案

如您所见,您不能在 Java 中重载运算符,并且 >将仅适用于数字数据类型。

对此的通用解决方案是 T extends Comparable<T>并使用它的 compareTo方法:

DLNode<T> current = front;
DLNode<T> minNode = current;
T minimum = current.getValue();

while (current.getNext() != null) {
if (minimum.compareTo(current.getValue()) > 0) {
minNode = current;
minimum = current.getValue();
}

current = current.getNext();
}

return current.getData();

(或者,如果 T 不是 Comparable ,您可以提供自定义的 Comparator 并以类似的方式使用它)。

关于java - 删除双向链表Java中具有最小值的泛型节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com