
Java
在
Java里,Set集合是无重复元素的集合,其实现类像HashSet、TreeSet等都具备添加元素时去重的功能。这一功能的实现依赖于以下两个方面:Set集合添加元素时,首先会调用元素对象的hashCode()方法获取其哈希码值,这个哈希码值为整数,能快速确定元素在集合中的位置。Set集合中,若两个元素哈希码值相同,则会调用equals()方法比较这两个元素是否相等。equals()方法的作用是比较对象内容是否一致。具体的实施步骤如下:在向Set集合添加元素的时候,第一步是调用要添加元素的hashCode()方法来得到它的哈希码值。Set集合会查看哈希码值在集合中是否已存在,若不存在,就视该元素为新元素,可添加进集合。若哈希码值已存在于集合里,Set集合就会用equals()方法比较这两个元素是否相同。当equals()方法返回true时,意味着两个元素相等,Set集合便认定其为重复元素,不会把它加入到集合中。若equals()方法返回false,意味着两个元素不等,Set集合就会把这个元素加入其中,以此确保集合里没有重复元素。要正确去重的话,添加到Set集合里的元素就得正确实现hashCode()与equals()方法。这两个方法的实现要依据对象内容判断相等性,不能只靠对象引用比较。当把自定义类对象当作Set集合的元素时,要正确实现hashCode()与equals()方法,这样才能正常去重。若这两个方法未实现,Set集合便不能正确去重,集合中可能就会存在重复元素。