gpt4 book ai didi

java - 如何从我的 ArrayList 中删除也在 Java 中的其他 ArrayList 中的对象?

转载 作者:行者123 更新时间:2023-11-29 06:52:36 25 4
gpt4 key购买 nike

在我的 java代码我有一个结构 Person :

public class Person {
String name;
String distance;
String address;
String field1;
String field2;
}

现在,我有一个 ArrayList<Person> people包含几个对象。我还有一个ArrayList<Person> otherPeople包含其他对象。

我想生成第三个列表,其中包含来自 people 的所有对象otherPeople 中还没有的.

但我只需要通过 name 来比较对象, distanceaddress , 我不关心 field1 的值和 field2 .

我考虑过创建 2 个 for 循环:

for (Person newPerson: people) {
for (Person oldPerson: otherPeople) {
if(newPerson.getName().equals(oldPerson.getName()) &&
newPerson.getDistance().equals(oldPerson.getDistance()) &&
newPerson.getAddress().equals(oldPerson.getAddress()) {

但我不知道如何继续,尤其是因为我无法从正在迭代的列表中删除元素...你能帮我吗?

最佳答案

你能覆盖 Person 类的 equal 方法吗?然后您将能够使用方法 remove 或 removeAll 从集合中删除人。

class Person {
String name;
String distance;
String address;
String field1;
String field2;

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Person person = (Person) o;
return Objects.equals(name, person.name) &&
Objects.equals(distance, person.distance) &&
Objects.equals(address, person.address);
}

@Override
public int hashCode() {
return Objects.hash(name, distance, address);
}
}

class Example {
public static void main(String[] args) {
Person person1 = new Person();
person1.address = "address_1";
person1.distance = "distance_1";
person1.name = "name_1";
person1.field1 = "field1_1";
person1.field2 = "field2_2";

Person person2 = new Person();
person2.address = "address_2";
person2.distance = "distance_2";
person2.name = "name_2";
person2.field1 = "field1_2";
person2.field2 = "field2_2";

ArrayList<Person> people = new ArrayList<>(Arrays.asList(person1, person2));
System.out.println(people);
ArrayList<Person> otherPeople = new ArrayList<>(Arrays.asList(person1));
people.removeAll(otherPeople);
System.out.println(people);
}
}

关于java - 如何从我的 ArrayList 中删除也在 Java 中的其他 ArrayList 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42749201/

25 4 0