我在我的程序中有以下方法:
/**
* Returns the index of the first occurrence of the specified item.
* If the specified item in not part of the list
* the method indexOf returns -1
*
* @param item
* @return index of the first occurrence of the item; -1 if the word was not found.
*/
public int indexOf(String item) {
int index = 0;
//While we haven't reached the end of the list
while(head != null) {
//If the items are equal return true
if(head.item == item) {
return index;
}
//Set the head to the next and increment the index
head = head.next;
index++;
}
return -1;
}
虽然一切对我来说看起来都是正确的(除了需要将 head.item == item 更改为 head.item.equals(item((,但它并没有给我正确的索引。
虽然它确实为一个没有在 est 中的元素给了我 -1,但每次它返回 0 作为列表中元素的索引时,我无法弄清楚为什么索引不递增。
任何意见将不胜感激!谢谢
当您在indexOf
和contains
中循环访问列表时,您似乎正在更改head
值。head
值应始终指向列表中的第一个条目,并且仅在append
和prepend
需要时才进行更改。若要迭代,应使用局部变量循环浏览列表。此外,您应该使用.equals
来比较字符串值,而不是==
。
public int indexOf(String item) {
int index = 0;
Node current = head;
//While we haven't reached the end of the list
while(current != null) {
//If the items are equal return the index
if(current.item.equals(item)) {
return index;
}
//Set current to the next and increment the index
current = current.next;
index++;
}
return -1;
}