【发布时间】:2018-07-18 07:59:17
【问题描述】:
我有一个关于过滤器的问题,我写了两个POJO:
@Getter
@Setter
@AllArgsConstructor
@ToString
class Person {
private int id;
private String firstName;
private List<Address> address;
}
@Getter
@Setter
@AllArgsConstructor
@ToString
class Address {
private int id;
private String street;
private String city;
}
我写了两个合集:
Address address1 = new Address(1, "Main street", "London");
Address address2 = new Address(2, "Hollywood Boolevard", "Los Angeles");
Address address3=new Address(3,"Rue de la paix","Paris");
List<Person> personList = Arrays.asList(
new Person(1, "Tom", Arrays.asList(address1)),
new Person(2, "Fred", Arrays.asList(address2)),
new Person(3,"Beth",Arrays.asList(address1,address2)),
new Person(4,"Marc",Arrays.asList(address1,address3))
);
如果我想要一个所有地址的列表,这很简单
List<Address> addressList=personList.stream().map(Person::getAddress)
.flatMap(List::stream).collect(Collectors.toList());
但这是我的问题,我想要一个此人居住的人的列表,例如在包含“ol”的街道上,我不知道如何用 java 流编写这个,过去我在 sql 中使用了内部联接但现在有了 Java 流,我怎么能做这个请求??? 感谢您的帮助
【问题讨论】:
标签: java filter java-8 java-stream