link.removeFirstOccurrence(new Integer(9));
这就是我的教授想要的,但只有当我传递像 link.removeFirstOccurrence(9);
这样的值时它才有效。有什么建议吗?
public boolean removeFirstOccurrence(Object obj) {
DNode<E> current = head;
DNode<E> temp = null;
if(current != null && current.data == obj) {
head = current.next;
return true;
}
while(current != null && current.data != obj) {
temp = current;
current = current.next;
}
if(current == null) {
return false;
}
temp.next = current.next;
current.next.previous = current.previous;
return true;
}
最佳答案
您的代码在 Java 对象比较方面存在问题。要比较值,对于原始数据类型可以使用“==”运算符,但对于非原始数据类型必须使用“equals()”方法
以下是更新的代码:
public boolean removeFirstOccurrence(Object obj) {
DNode<E> current = head;
DNode<E> temp = null;
if (current != null && current.data != null && current.data.equals(obj)) {
head = current.next;
return true;
}
while (current != null && current.data != null && !current.data.equals(obj)) {
temp = current;
current = current.next;
}
if (current == null || current.data == null) {
return false;
}
temp.next = current.next;
current.next.previous = current.previous;
return true;
}
关于java - Java 中删除第一次发生的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60499167/