gpt4 book ai didi

java-8 - 从列表 java8 中删除重复项

转载 作者:行者123 更新时间:2023-12-04 16:19:02 25 4
gpt4 key购买 nike

我在下面有一个类,想删除包含相同名称的重复人员,如何使用 Java8 Lambda 进行操作,预期列表包含下面的 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);

}
}

最佳答案

您可以过滤掉它们并生成唯一的 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()));

关于java-8 - 从列表 java8 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com