我将一堆用户放入一个列表中,然后将另一组用户添加到一个单独的列表中。我试图将第一个对象列表与第二个列表进行比较,并创建一个新的唯一对象列表。
// List creation (new, old, unique)
List<User> listNew = new ArrayList<User>();
List<User> listOld = new ArrayList<User>();
List<User> listUnique = new ArrayList<User>();
...
for (User unique : listNew) {
if (!listOld.contains(unique)) {
listUnique.add(unique);
}
}
所以我有这段代码来做到这一点,但它只是重复了 listNew。我如何才能将对象相互比较?我的类文件是
public class User {
private String fName;
private String mInitial;
private String lName;
private String age;
private String city;
private String state;
....
最佳答案
您需要在User
类中实现equals
和hashCode
。如果您没有在 User
中实现这些方法,则仅当 listOld
包含完全相同的实例时,listOld.contains(unique)
才会返回 true由unique
引用。
检查一下java中身份和相等之间的区别:What is the difference between identity and equality in OOP?
关于Java 对象列表包含在另一个对象列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370900/