首页 > 解决方案 > 在两个arraylist中找到commen对象

问题描述

需要找到与arraylist之间的共同对象。它们都是VarList类型,即简单的 POJO 类。我的比较返回数据库列表中的所有元素,需要在两个数组列表之间有一个公共元素(如您所见它们是对象)并将它们添加到新列表中。

变量列表类

public class VarList {
    private int number;
    private int age;
    private String name;
    public VarList(int number, int age, String name) {
        super();
        this.number = number;
        this.age = age;
        this.name = name;
    }
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

我的解决方案有问题

//database arraylist
        ArrayList<VarList> database=new ArrayList<VarList>();
        database.add(new VarList(105,19,"b"));
        database.add(new VarList(101,18,"c"));
        database.add(new VarList(106,54,"database"));
//object array list        
        ArrayList<VarList> object=new ArrayList<VarList>();
        object.add(new VarList(105,19,"b"));
        database.add(new VarList(106,54,"database"));


        List<VarList> resultList = new ArrayList<VarList>();
        for(VarList user1 : database) {
            for(VarList user2 : object) {
                if(user1.getName().equals(user2.getName())) {
                    resultList.add(user2);
                }
                System.out.println(resultList);
            }
        }

标签: javaarraylistcollectionsjava-8

解决方案


覆盖equals&hashCode

您需要在类中定义和方法的覆盖。您的类从.equalshashcodeVarListObject

另外,请多考虑命名事物。该类VarList不是列表,它是列表中的一个元素。当然,它有一个实际的描述性名称。您声明的第二个ArrayList名为“对象”?!?请永远不要将事物命名为对象。称它为 testList 什么的。

最后,你System.outresultList循环中,所以它的输出可能会让你感到困惑。或者也许这是故意的。只要意识到它将为resultList.


推荐阅读