java - 避免重复记录 - HashSet

标签 java jakarta-ee arraylist hashset

我正在尝试通过 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/

相关文章:

java - 无法从 Byte 转换为 byte[] java

java - 如何在 Firebase-Android 中链接 2 个事件监听器,以便第一个事件监听器在第二个事件监听器完成之前不会继续?

java - 替换选项卡 5 和 6 之后的内容(正则表达式)

jakarta-ee - 将 JavaEE 应用程序扩展到 1.000.000 个并发用户

Java 嵌套 ArrayList 返回对象

java - 检查 ArrayList 中的某个对象是否满足某些条件

java - 当我们在java中使用连接两个字符串对象时编译器如何工作

JAVA 2D 字符串数组列数

node.js - 是否可以将 Node.js 集成到 java web 应用程序中以获得聊天功能等某些功能?

Netbeans 中的 Java EE8 - javaee-endorsed-api 8