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;
}
}
我想比较两个对象的 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;
}
}