【发布时间】:2014-04-25 12:58:48
【问题描述】:
我正在制作电话簿中条目的链接列表。但是我正在努力制定一个完整的删除方法。我正在尝试检测我要删除的条目不在列表中,并给出“找不到条目”消息。我正在使用链表的列表接口。到目前为止,这是删除方法。现在我试图在最后一个 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");
}
}
【问题讨论】:
-
您考虑过使用基本的
myList.remove(Object o)方法吗?或者这是给自己实现linkedList的功课? -
当我删除一个条目时,每个条目都包含字符串,用于某人的姓名和电话号码。所以我必须检查每个对象,看看它是否正确。我只是想知道如何检测我是否在列表的末尾
-
为什么是
phoneBook.size() != 0?如果列表为空,则也找不到该条目...我不明白您为什么将这种情况排除在您的消息中。
标签: java linked-list listiterator