HashSet添加元素时,先比较hashCode是否相同,若不同,则判为不同的元素,加进集合;若是hashCode相同,还会进行equals比较,若此时equals不同,也会判为不同元素,若equals相同,则是重复元素.(添加元素的具体顺序和hashCode有关);
你的例子中出现那种情况的主要原因是: 元素都是String类型的,查看API的String的hashCode:
返回此字符串的哈希码。String 对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
你的几个String也就最后一位不同,所以出现貌似有序的假象!!!! |