【发布时间】:2017-08-03 22:13:52
【问题描述】:
我得到了一个用户数组列表,这些用户每天可以多次登录网站。 如何从第一个数组列表中创建唯一用户的 ArrayList。 换句话说,我需要忽略多个登录。 例如,如果有 20 个网站登录,并且所有这些登录都是由两个用户进行的,那么第二个列表应该只包含两个用户对象。 我是 Java 编程语言的新手,我需要帮助。
这是用户类:
public class User {
private String id
private String date;
public String getId() {
return id
}
public void setId(String id) {
this.id = id
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
这就是我将如何解决这个问题,但由于某种原因它不起作用。
ArrayList<User> userList = new ArrayList<>();
ArrayList<User> uniqueUserlist = new ArrayList<>();
String id = null;
for(User user : userList) {
if (user.getId() != id) {
uniqueUserlist.add(user);
}
id = user.getId();
}
谢谢。
【问题讨论】:
-
在循环中使用之前,您还没有为您的
userList初始化数据 -
==和!=在 Java 中比较引用相等,而不是数据相等。如果要检查 id 是否相等,请使用user.getId().equals(id)。 -
如果你修改你的
User类以赋予它合理的equals和hashCode方法(和toString完整性),那么你可以使用“Get unique values from arraylist in java”中的解决方案。