Возвращайте разницу между двумя списками, сравнивая значения ключей, а не все объекты в Java.JAVA

Программисты JAVA общаются здесь
Anonymous
Возвращайте разницу между двумя списками, сравнивая значения ключей, а не все объекты в Java.

Сообщение Anonymous »

У меня есть два списка из одного класса (например, класс Person со свойством name и age), и я пытаюсь найти эффективный способ удаления элементов из списка A, если они появляются в списке B, но только если свойство name совпадает (без учета возраста). Я не хочу удалять ВСЕ значения с совпадающим именем из списка Б, а хочу удалить одно значение из списка А для каждого совпадающего имени в списке Б.
Вот пример:< /p>

Код: Выделить всё

public class Person {
private String firstName;
private Integer age;

public Person(String firstName, Integer age) {
this.firstName = firstName;
this.age = age;
}
}

public class Main {
public static void main(String[] args) {

Person p1 = new Person("John", 25);
Person p2 = new Person("Lisa", 54);
Person p3 = new Person("Mike", 61);
Person p4 = new Person("John", 61);
Person p5 = new Person("John", 13);
List
 people1 = new ArrayList();
people1.add(p1);
people1.add(p2);
people1.add(p3);
people1.add(p4);
people1.add(p5);

Person p6 = new Person("John", 88);
Person p7 = new Person("Lisa", 66);
Person p8 = new Person("Mike", 71);
List people2 = new ArrayList();
people2.add(p6);
people2.add(p7);
people2.add(p8);

for (Person p : people2) {
people1.stream()
.filter(person -> Boolean.parseBoolean(person.firstName = p.firstName))
.findFirst()
.ifPresent(person -> people1.remove(person));
} // This is what i've tried, but it doesn't work and seems very inefficient

System.out.println(people1);
}
По сути, я хочу перебрать список людей2, и если человек с таким же именем существует в списке люди1, то найти первое совпадение и удалите его (учитывайте только имя, а не возраст).
Желаемый результат: список, содержащий

[*]Джон, 61 год.
[*]Ивана, 13 лет


Подробнее здесь: https://stackoverflow.com/questions/770 ... ot-the-ent

Вернуться в «JAVA»