(1),HashSet的一个对象hS,用hS.add(Object o),加入对象时,由于要确定每个元素的唯一性,系统就会首先自动调用对象o的int hashCode()函数。
(2),然后会把得到的o的hash code值与已经加入容器的对象的hash code值做比较(注意:比较的只是hash code值而不是对象的字符串表达式的比较,而且这一过程看不见)。如果将要加入的对象o的hash code值与已经加入的容器里面的任意一个对象的hash code值不同,则将对象o加入容器。
(3),如果有对象的hash code值与o的hash code值相同,则系统会再自动调用0的boolean equals(Object obj)函数,并且按对象加入容器的次序的相反顺序(即后加入的先作参数)逐一把所有这些与对象o的hash code值相同的对象作为参数,来进行比较。
(4),如果o的boolean equals(Object obj)函数的所有返回值都是false则将对象o加入容器。