Android :比较两个对象的 ArrayList 并从第二个 ArrayList 中找到不匹配的 id

Android : Compare two ArrayList of objects and find unmatching ids from the second ArrayList

我想比较两个对象的 ArrayList,并根据对象中的 id 从第二个 ArrayList 中找出不匹配的值。

例如:

Person.java

private int id;
private String name;
private String place;

MainActivity.java:

ArrayList<Person> arrayList1 = new ArrayList<Person>();
arrayList1.add(new Person(1,"name","place"));
arrayList1.add(new Person(2,"name","place"));
arrayList1.add(new Person(3,"name","place"));

ArrayList<Person> arrayList2 = new ArrayList<Person>();
arrayList2.add(new Person(1,"name","place"));
arrayList2.add(new Person(3,"name","place"));
arrayList2.add(new Person(5,"name","place"));
arrayList2.add(new Person(6,"name","place"));

我想比较 arrayList1、arrayList2 并需要从 arrayList2 中找出不匹配的值。 我需要 id 值 5,6.

我该怎么做?

您可以使用内部循环来检查 arrayList2 中的人物 ID 是否对应于 arrayList1 中的任何人物 ID。如果找到某个人,您将需要一个标志来标记。

ArrayList<Integer> results = new ArrayList<>();

// Loop arrayList2 items
for (Person person2 : arrayList2) {
    // Loop arrayList1 items
    boolean found = false;
    for (Person person1 : arrayList1) {
        if (person2.id == person1.id) {
            found = true;
        }
    }
    if (!found) {
        results.add(person2.id);
    }
}

您应该遍历您拥有的最短的 ArrayList,因此请检查哪个列表更短,然后针对另一个列表中的每个索引遍历该列表中的所有索引。

(这是假设您在两个列表中都没有任何重复项。如果有,您可能想要 return 找到所有索引的列表。)

查看对人的修改class </p> <pre><code>public static class Person{ //setters and getters @Override public boolean equals(Object other) { if (!(other instanceof Person)) { return false; } Person that = (Person) other; // Custom equality check here. return this.getId() == that.getId(); } }

已覆盖 equals(Object other)

然后简单地做这个 </p> <pre><code>for (Person person : arrayList1) { arrayList2.remove(person); }

你的答案是数组列表 2,它只会包含奇数个对象

arrayListChars=新的 ArrayList<>(); //[M,A,R,V,E,L]

arrayListAddChars=新的 ArrayList<>(); //[M,A,....即将值]

整数计数 = 0;

for(int i=0;i

if(arrayListAddChars.get(i).等于(arrayListChars.get(i))){

    count++;
   }
    else
    {
     break;
    }
  }