我正在制作电话簿中条目的链接列表。但是,我正在努力制定出完整的删除方法。我正在尝试检测要删除的条目不在列表中,并给出“找不到条目”消息。我正在使用链表的列表界面。到目前为止,这是删除方法。现在,我试图在最后的if语句中介绍“最后一个节点”的情况。但这是行不通的。如果我没有使用列表接口,我想我可以使用getLast()方法并将其与我当前所在的条目进行比较,但是我更喜欢这样做,并想出另一种方法来解决它。有任何想法吗 ?
--edit其不起作用的原因是,如果我删除列表中的最后一个条目,即使该条目作为最后一个节点并被成功删除,它也会打印出未找到条目的消息
public void deleteEntry(String number) {
ListIterator<Entry> i = phoneBook.listIterator();
while(i.hasNext()){
Entry e = i.next();
if(e.getNumber().equals(number)){
i.remove();
break;
}
}
if(phoneBook.size() != 0 && (!(i.hasNext()))){
System.out.println("Entry not found");
}
}
最佳答案
您可以这样进行:
public void deleteEntry(String number) {
int size = phoneBook.size();
for (ListIterator<Entry> i = phoneBook.listIterator(); i.hasNext(); ) {
Entry e = i.next();
if (e.getNumber().equals(number)) {
i.remove();
break;
}
}
if (phoneBook.size() == size) {
System.out.println("Entry not found");
}
}