Abh*_*dan 3 java java-8 java-stream
我有一个DTO看起来像-
@Getter
@Builder
class Person{
private String id;
private String name;
private Integer age;
}
Run Code Online (Sandbox Code Playgroud)
创建一个新的arraylist为-
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());
Run Code Online (Sandbox Code Playgroud)
另一个列表存在-
List<Person> ages = new ArrayList<Person>();
ages.add(Person.builder().id("001").age(25).build());
ages.add(Person.builder().id("002").age(40).build());
Run Code Online (Sandbox Code Playgroud)
什么是Java中8得到的一个子集的最佳方式persons,其中person.id().equals(age.id())每个项目person中persons,并age在ages?
您可以创建集合中Set人员的ID ages。
Set<String> ageIds = ages.stream().map(Person::getId).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
进一步,如果上面设置contains了ID ,则使用它根据查询过滤结果子集中的每个人项目。
List<Person> subset = persons.stream()
.filter(p -> ageIds.contains(p.getId()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |