正在检测链接列表的末尾



我正在制作一个电话簿中条目的链接列表。然而,我正在努力找出一个完整的删除方法。我正在尝试检测我试图删除的条目不在列表中,并发出"未找到条目"消息。我正在使用链表的列表界面。这是迄今为止的删除方法。现在,我尝试在最后一个if语句中介绍"最后一个节点"的情况。但它不起作用。如果我没有使用列表接口,我想我可以使用getLast()方法并将其与我当前所在的条目进行比较,但我更喜欢这样做,并找出另一种解决方法。有什么想法吗?--编辑它不起作用的原因是,如果我删除了列表上的最后一个条目,它会打印出条目未找到的消息,即使该条目是最后一个节点,并且已成功删除

 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");
    }
}

return;替换break;语句。

public void deleteEntry(String number) {
    ListIterator<Entry> i = phoneBook.listIterator();
    while(i.hasNext()){
        Entry e = i.next();
        if(e.getNumber().equals(number)){
            i.remove();
            return;
        }
    }
    System.out.println("Entry not found");
}

但最好将返回类型更改为boolean,并在找到数字后立即返回true,否则在结束时返回false

public void deleteEntry(String number) {
    ListIterator<Entry> i = phoneBook.listIterator();
    boolean found = false;
    while(i.hasNext()){

        Entry e = i.next();
        if(e.getNumber().equals(number)){
            if(!found)
        found = true;
            i.remove();
            break;
        }
    }
    if(!found){
        System.out.println("Entry not found");
    }
}

相关内容

  • 没有找到相关文章

最新更新