Я использую Java 8, и у меня есть два объекта выглядят так:
Класс Person:
public class Person {
private String id;
private String name;
public Person() {
}
public Person(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
Класс Person1:
public class Person1 {
private String id;
private String name;
public Person1() {
}
public Person1(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person1{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
У меня два спискакак:
List<Person> persons= Arrays.asList(new Person("1","A"),new Person("2","B"));
List<Person1> persons1 = Arrays.asList(new Person1("3","C"),new Person1("1","F"));
Теперь я хочу использовать поток Java 8 цикла два списка и сравнить.Если какой-либо объект в списке лиц равен лицу 1, я создам новый список и установлю его с новым значением.Пример: Если Person1 ("1", "F") равен Person ("1", "A") , потому что я использую id для сравнения, я получаю имя от Person1, установленное вЧеловек.Результат: Person ("1," F ") и добавьте в него два новых списка.
Мой код при использовании для:
for (Person person : persons) {
for (Person1 person1 : persons1 ) {
if (person1.getId().equals(person.getId())) {
person.setName(person1.getId());
break;
}
}
}
Теперь я хочу преобразовать его в поток с новым спискомвыглядеть так:
List<Person> personList =
list.stream()
.filter (
person -> list1.stream()
.anyMatch(person1 -> person1.getId()== person.getId()))
.collect(Collectors.toList());
Но это только фильтр лиц. Я хочу сравнить два объекта списка. Если один и тот же идентификатор, я хочу установить имя из объекта в Person1 лиц. Я знаю, что мы можем использовать карту в потоке Java 8но я не могу как это сделать. Пожалуйста, помогите