Java哈希集重复比较
我有一个类Java哈希集重复比较,java,list,duplicates,hashset,Java,List,Duplicates,Hashset,我有一个类Person,它包含字符串firstName,lastName。我想在列表中插入此类的实例,但不想插入重复的实例 如何使用散列集,使其使用类似于名字+姓氏的内容来找出重复项?您需要使您的.equals()方法为两个同名的人返回true。您还需要实现.hashcode()方法,以确保两个相等的对象具有相同的hashcode 您的问题涉及使用列表,然后提到HashSet。如果保留插入顺序很重要,那么哈希集不是您想要的,您应该使用。您应该只使用集而不是列表。如果您关心插入顺序,请在Perso
Person
,它包含字符串firstName,lastName
。我想在列表中插入此类的实例,但不想插入重复的实例
如何使用散列集
,使其使用类似于名字+姓氏
的内容来找出重复项?您需要使您的.equals()
方法为两个同名的人返回true
。您还需要实现.hashcode()
方法,以确保两个相等的对象具有相同的hashcode
您的问题涉及使用列表,然后提到HashSet。如果保留插入顺序很重要,那么哈希集
不是您想要的,您应该使用。您应该只使用集
而不是列表
。如果您关心插入顺序,请在Person
类中使用。您需要equals()
和hashCode()
方法
equals()
很简单,对于hashCode()
来说,最简单的解决方案是:
public int hashCode() {
return Arrays.hashCode( new Object[] { firstName, lastName } );
}
虽然如果您的Person
对象是不可变的(如果您将其放入哈希集中,它应该是不可变的),您应该缓存该值。重要->您需要实现equals和hashcode
始终实现这两个目标。它们必须一致->如果2个对象相等,则它们必须具有相同的哈希代码
这是非常重要的。
再读一遍。:)
HashSet和HashMaps使用hashcode和equals来比较元素。不同的元素可能具有相同的哈希代码,但它们不相等