我在下面有一个类,想要删除包含相同名称的重复者,如何使用Java8 Lambda,预期List包含p1,p3,如下所示.
public class Person {
public int id;
public String name;
public String city;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getCity() {
    return city;
}
public void setCity(String city) {
    this.city = city;
}
}
import java.util.ArrayList;
import java.util.List;
public class Testing {
public static void main(String[] args) {
    List<Person> persons = new ArrayList<>();
    Person p1 = new Person();
    p1.setId(1);
    p1.setName("Venkat");
    p1.setCity("Bangalore");
    Person p2 = new Person();
    p2.setId(2);
    p2.setName("Venkat");
    p2.setCity("Bangalore");
    Person p3 = new Person();
    p3.setId(3);
    p3.setName("Kumar");
    p3.setCity("Chennai");
    persons.add(p1);
    persons.add(p2);
    persons.add(p3);
}
}
Eug*_*ene 14
您可以过滤掉它们并生成一个唯一的Set:
Set<Person> set = persons.stream()
            .collect(Collectors.toCollection(() -> 
                 new TreeSet<>(Comparator.comparing(Person::getName))));
甚至更好:
Set<String> namesAlreadySeen = new HashSet<>();
persons.removeIf(p -> !namesAlreadySeen.add(p.getName()));
Tar*_*nyk 11
List<Person> personsWithoutDuplicates = persons.stream()
 .distinct()
 .collect(Collectors.toList());
| 归档时间: | 
 | 
| 查看次数: | 19980 次 | 
| 最近记录: |