package pack2; import java.util.*; /*Node 的equals()和hashCode()两个函数缺一不可 * HashSet会通过这两个函数来判断两个元素是否等价 * HashSet满足元素互异性 */ class Node { public int number; public Node(int n) { number = n; } public boolean equals(Object o) { if (number == ((Node) o).number) return true; else return false; } // public int hashCode(){ return number; } } public class HashSetTest { public static void main(String[] args) { HashSet<Node> set = new HashSet<Node>(); set.add(new Node(3)); set.add(new Node(3)); System.out.println(set.size()); } }
如果没有实现hashCode,输出为2.因为HashSet<Node>认为这两个东西不全等
如果实现了hashCode,输出为1,因为HashSet<Node>中没有重复元素
在java中,全等意思是hashCode相等并且a.equals(b)
在java中,a.equals(b)表示a与b相似