Возвращайте разницу между двумя списками, сравнивая значения ключей, а не все объекты в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Найдите разницу между двумя двумерными массивами, сравнивая целые строки [дубликат]
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как показать разницу между двумя списками словарей
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как показать разницу между двумя списками словарей
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как показать разницу между двумя списками словарей
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Возвращайте только уникальные значения из коллекции, удаляя все повторения.
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

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