Java 在哈希集中添加元素
我有这段代码,希望大小是2,但是是1Java 在哈希集中添加元素,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.
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中的任何集合都不能允许重复值。