我正在尝试通过 for
循环将 DTO 的多个对象放入 ArrayList
中。添加所有对象后,为避免重复,我将 ArrayList
转换为 HashSet
以避免重复记录。
代码片段-
....
ArrayList list = new ArrayList();
for( .... ){
Class factory = DTO.getClass();
Object bean = factory.newInstance();
list.add(bean);
}
return new ArrayList(new HashSet(list));
但是返回的 ArrayList
有重复项,我想避免这种情况。
最佳答案
即使您的 DTO 的两个实例包含完全相同的值,HashSet 也会认为它们不同。要被视为相等,dto1.equals(dto2)
(和 dto2.equals(dto1)
)必须返回 true。因此,您必须覆盖 DTO 中的 Object.equals()
方法,以便指定两个 DTO 实例何时相等。当您覆盖 equals()
时,您还必须覆盖 hashCode()
。两个相等的对象必须具有相同的 hashCode。
阅读这两个方法的文档,如果您不知道如何实现它们,请使用您的 IDE 生成这两个方法。
关于java - 避免重复记录 - HashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16633149/