1日に複数回WebサイトにログインできるユーザーのArrayListが見つかりました。 最初のarraylistから一意のユーザーのArrayListを作成する方法を教えてください。 つまり、複数のログインを無視する必要があります。 たとえば、Webサイトへのログインが20件あり、すべてのログインが2人のユーザーによって行われた場合、2番目のリストには2つのユーザーオブジェクトのみが含まれている必要があります。 私はJavaプログラミング言語の初心者です。私は助けが必要です。ここで JavaのArrayListにユニークな項目のArrayListを作成する
は、Userクラスです: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();
}
ありがとうございます。
あなたがループ –
'=='と '!=' Javaで参照の等価を比較し、データではなく平等に使用する前に、あなたの 'userList'のためではないのinitデータを持っています。 idが等しいかどうかをチェックするには、 'user.getId()。equals(id)'を使います。 – azurefrog
'User'クラスを変更して、それを分かりやすくする(' equals')(https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang .Object-)および['hashCode'](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--)のメソッド(および完全性のためには' toString') "[javaのarraylistから一意の値を取得する](https://stackoverflow.com/questions/13429119)"で解決方法を使用することができます。 –