У меня есть ArrayList пользователей, которые могут заходить на веб-сайт несколько раз в день. Как я могу создать 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
перед использованием в цикле - person TuyenNTA   schedule 04.08.2017==
и!=
в Java сравнивают равенство ссылок, а не равенство данных. Если вы хотите проверить, равны ли идентификаторы, используйтеuser.getId().equals(id)
. - person azurefrog   schedule 04.08.2017User
, чтобы сделать его разумнымequals
иhashCode
(иtoString
для полноты), вы можете использовать решение в Получить уникальные значения из arraylist в java а>. - person Kevin J. Chase   schedule 04.08.2017