Java 对象列表包含在另一个对象列表中

标签 java list object contains

我将一堆用户放入一个列表中,然后将另一组用户添加到一个单独的列表中。我试图将第一个对象列表与第二个列表进行比较,并创建一个新的唯一对象列表。

        // 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类中实现equalshashCode。如果您没有在 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/

相关文章:

java - 高级 Java 8 流使用问题

java - Lucene 词干提取器之间的区别 : EnglishStemmer, PorterStemmer、LovinsStemmer

list - 在列表中找到倒数第二个项目,请解释此解决方案

c# - 我需要使用 linq 获取多个索引而不是一个

javascript - 基本构造函数对象帮助 - JS

javascript - 为什么我的 setInterval 函数在我的对象中不起作用?

java - ANTLR BNF 语法符号中 epsilon 的等价物是什么?

python - 将元组列表转换为深层嵌套列表

java - 过载 : Ambigutiy while the parameters are primitive but not while it is Reference type

java - 如果参数为 null,则选择所有记录,否则返回 JPA Criteria 查询中的特定项目