我试图让投票者仅使用他们的学生 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.
您必须在
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);
}
}
现在你指定两个对象什么时候应该相等