爲了實踐目的,我已經編寫了下面的代碼,其中equals()被重寫爲Node,以便兩個節點n1和n2是如果他們的數據不相上下,就是相等在下面的代碼中,節點n1和n2被定義爲具有相同的數據,其是整數100.如何使HashSet <T>在調用HashSet.add()時調用T.equals(Object)
還定義了節點的HashSet。我們也知道HashSet不接受重複。如何讓這個HashSet標記兩個節點n1和n2如果他們的數據是相同的,並且如果n1的數據與n1相同則不接受n2?
我的印象是,當調用hashSet.add(n2)時,它會調用Node.equals來查看n2的重複是否已經在該集合中,但我錯了!
當HashSet.add()被調用時,如何使HashSet> hashSet檢查退出節點的數據是否重複?
import java.util.HashSet;
public class Node<T>{
public T data;
public Node(T data){
this.data = data;
}
boolean equals(Node<T> node){
return this.data.equals(node.data);
}
public static void main(String[] args) {
Node <Integer> n1 = new Node<>(100);
Node <Integer> n2 = new Node<>(100);// both have same data
HashSet<Node<Integer>> hashSet = new HashSet<>();
System.out.println(hashSet.add(n1));
System.out.println(hashSet.add(n2));// this should not be true as n2.equals(n1) and set does not let duplicates
}
}
哪裏是你的'等於(對象)'?我只看到'equals(Node)'而且不會被調用。 –