Java 在哈希集中添加元素

Java 在哈希集中添加元素,java,hashset,Java,Hashset,我有这段代码,希望大小是2,但是是1 Set<UserRole> userRoles = new HashSet<>(); userRoles.add(new UserRole(user, roleService.findByName(RolesEnum.ADMIN.getRoleName()))); userRoles.add(new UserRole(user, roleService.findByName(RolesEnum.

我有这段代码,希望大小是2,但是是1

Set<UserRole> userRoles = new HashSet<>();


         userRoles.add(new UserRole(user, roleService.findByName(RolesEnum.ADMIN.getRoleName())));
         userRoles.add(new UserRole(user, roleService.findByName(RolesEnum.BASIC.getRoleName())));


         System.out.println("#################");
         System.out.println("userRoles -> " + userRoles.size());
         System.out.println("#################");
Set userRoles=new HashSet();
添加(新用户角色(用户,roleService.findByName(RolesEnum.ADMIN.getRoleName()));
添加(新用户角色(用户,roleService.findByName(RolesEnum.BASIC.getRoleName()));
System.out.println(“###################”;
System.out.println(“userRoles->”+userRoles.size());
System.out.println(“###################”;

在哈希集中,不会插入重复值。它是java中Set数据结构的一个内置功能。因为两个插入的值在您的情况下是相等的,所以不会插入第二个值。尝试向数据结构插入不同的值。

然后您的
UserRole
可能仅基于
user
定义了相等,或者您的
roleService
在上述代码中返回相同的结果。您应该仔细阅读
HashSet
的工作原理。虽然如果你是一名高级开发人员,正如你的个人资料所说,你应该知道它是如何工作的。你是否覆盖了
hashCode
equals
方法?检查
user1.equals(user2)==true
,如果
hashCode(user1)==hashCode(user2)
顺便说一句,这不仅仅是HashSet的一个功能,Java中的任何集合都不能允许重复值。