gpt4 book ai didi

java - 在 Java 8 中的标识字段上查找数组列表的子集

转载 作者:行者123 更新时间:2023-12-02 08:40:30 25 4
gpt4 key购买 nike

我有一个 DTO,看起来像 -

@Getter
@Builder
class Person{
private String id;
private String name;
private Integer age;
}

创建一个新的数组列表 -

List<Person> persons = new ArrayList<Person>();
persons.add(Person.builder().id("001").name("alpha").build());
persons.add(Person.builder().id("002").name("beta").build());
persons.add(Person.builder().id("003").name("gamma").build());

另一个列表存在为 -

List<Person> ages = new ArrayList<Person>();
ages.add(Person.builder().id("001").age(25).build());
ages.add(Person.builder().id("002").age(40).build());

获取 Java 8 persons 子集的最佳方式是什么? ,其中person.id().equals(age.id())对于每个项目 personpersonsageages

最佳答案

您可以在ages集合中创建一个Set人员ID。

Set<String> ageIds = ages.stream().map(Person::getId).collect(Collectors.toSet());

此外,如果上述集合包含其 ID,则使用它根据查询过滤结果子集中的每个人员项目。

List<Person> subset = persons.stream()
.filter(p -> ageIds.contains(p.getId()))
.collect(Collectors.toList());

关于java - 在 Java 8 中的标识字段上查找数组列表的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58935399/

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