gpt4 book ai didi

java - 使 Java List 变得唯一的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-01 18:08:02 25 4
gpt4 key购买 nike

我们得到了这些代码:

User user1=new User();
user1.setUserName("tomhand");

User user2=new User();
user2.setUserName("mira");

User user3=new User();
user3.setUserName("tomhand");

.......

List<User> list = new ArrayList<User>();
list.add(user1);
list.add(user2);
list.add(user3);
....

我们可以看到list包含2个具有相同用户名tomhandUser现在,使 list 变得唯一(即 list 不应包含 2 个具有相同 UserName 的用户)的最简单方法是什么?

最佳答案

将元素添加到列表 ( ArrayList ) 时,它不会对现有元素执行任何检查来检查它是新元素还是已经存在。将无法使用List并直接获得所需的行为。

您可以使用Set仅存储独特的集合 User基于 name 的实例它的属性。

它正在使用 HashSet<User>实现,它使用 hashcode()传入对象的名称,用于将它们存储在某个位置。如果该元素已经存在,则它使用 equals()来比较两个对象。

这是一个示例:

public class User {
private String name;
public User(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof User))
return false;
User user = (User) obj;
return user.name.equals(this.name);
}
@Override
public int hashCode() {
return name.hashCode() ;
}
}

class UserMain {
public static void main(String[] args) {
Set<User> set = new HashSet<>();
set.add(new User("A"));
set.add(new User("B"));
set.add(new User("A"));
System.out.println(set.size());
}
}

关于java - 使 Java List<User> 变得唯一的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com