【问题标题】:What is wrong with this contains(T entry) method? Java. Linked List这个 contains(T entry) 方法有什么问题?爪哇。链表
【发布时间】:2011-11-21 06:00:13
【问题描述】:

我正在创建一个链表类并尝试实现这个contains() 方法。

我有headtail 标记节点,所以我的循环从head.next 开始。 length 是列表的大小。我可以给你们的一切:O

public boolean contains(T entry) {

    boolean found = false;
    Node current = head.next;

    for (int i = 0; i < length; i++) {

        if (current.equals(entry)) {

            found = true;
        }
        current = current.next;
    }
    return found;
}

【问题讨论】:

  • 怎么了?它不工作吗?它会破裂吗?此外,如果没有更多上下文,这甚至无法编译。例如,什么是“长度”?
  • 抱歉没有具体说明。在我的测试器中,我只是使用字符串,例如,如果我将“hello”添加到我的列表中并调用 myList.contains("hello");它返回假。我已经彻底测试了我的添加方法,它确实有效。长度是我的列表中有多少项目。

标签: java list generics linked-list sentinel


【解决方案1】:

问题是您将 NodeT 进行比较,如果您的 equals 方法正确履行了正确的合同,则将始终返回 false 作为不同的类。

即重新检查这一行:

if (current.equals(entry)) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    相关资源
    最近更新 更多