Java HashSet: 如何正确存储和检索自定义对象
以下是创建三个 User 对象并覆盖 equals 和 hashCode 方法,并将其存储在 HashSet 中的示例代码:\n\njava\nimport java.util.HashSet;\n\nclass User {\n private String name;\n private int age;\n\n public User(String name, int age) {\n this.name = name;\n this.age = age;\n }\n\n // 覆盖 equals 方法\n @Override\n public boolean equals(Object obj) {\n if (this == obj) {\n return true;\n }\n if (obj == null || getClass() != obj.getClass()) {\n return false;\n }\n User user = (User) obj;\n return age == user.age && name.equals(user.name);\n }\n\n // 覆盖 hashCode 方法\n @Override\n public int hashCode() {\n int result = name.hashCode();\n result = 31 * result + age;\n return result;\n }\n}\n\npublic class Main {\n public static void main(String[] args) {\n HashSet<User> userSet = new HashSet<>();\n\n User user1 = new User("John", 25);\n User user2 = new User("Jane", 30);\n User user3 = new User("John", 25);\n\n userSet.add(user1);\n userSet.add(user2);\n userSet.add(user3);\n\n System.out.println("HashSet size: " + userSet.size());\n }\n}\n
\n\n在上面的示例中,我们创建了三个 User 对象:user1、user2 和 user3。这三个对象分别具有不同的 name 和 age 属性。我们在 User 类中覆盖 equals 和 hashCode 方法,以便 HashSet 能够正确地判断对象是否相等,并且能够正确地存储和检索对象。\n\n在 main 方法中,我们创建了一个 HashSet
原文地址: http://www.cveoy.top/t/topic/p3Mu 著作权归作者所有。请勿转载和采集!