使用对象属性进行双向链表搜索

问题描述 投票:0回答:1

我试图让投票者仅使用他们的学生 ID 来搜索他们的帐户详细信息,那么我应该如何传递到搜索方法中??

搜索方式:

    public T search(T data) {
        Node currentNode = getNode(data);
        if (currentNode != null) {
            return currentNode.data;
        } else {
            return null;
        }
    }

    private Node getNode(T data) {
        Node currentNode = this.firstNode;
        while (currentNode != null) {
            if (currentNode.data.equals(data)) {
                return currentNode;
            }
            currentNode = currentNode.next;
        }

        return currentNode;
    }

司机程序:

        List<Voter> voterList = new DoublyLinkedList<>();
        //Username, password, StudID
        voterList.add(new Voter("Alice", "password1", "001"));
        voterList.add(new Voter("Bob", "password2", "002"));        
        voterList.add(new Voter("Charlie", "password3", "003"));

        String valueSearch = "003";
        System.out.println(voterList.search(new Voter("", "", valueSearch)));

我希望它会根据他们输入的学生ID来显示选民的所有详细信息,但为什么它不能QQ.

java linked-list doubly-linked-list
1个回答
0
投票

您必须在

equals()
类中实现
Voter
方法,因为当您执行以下行时:

if (currentNode.data.equals(data)) {...}

它使用默认的 equals 实现。您应该根据什么变量/状态指定什么应该相等。

所以在

Voter
类中添加:

public class Voter {
    // ...
    public boolean equals(Object obj) {
        if (!(obj instanceof Voter)) return false;
        Voter other = (Voter) obj;
        return this.studID.equals(other.studID);
    }
}

现在你指定两个对象什么时候应该相等

© www.soinside.com 2019 - 2024. All rights reserved.