我有一个包含Person
个对象的列表。这是我的Person
课程:
public class Person(){
// contructors
private String lastname;
private String firstname;
private List<Place> places;
// getters and setters
}
我的Place
课程是:
public class Place(){
// contructors
private String town;
// getters and setters
}
我有代码从人员中删除一些地方:
List<Person> persons = new ArrayList<Person>();
// adding persons to List
// Below i want to remove person whose place is in town Paris.
persons.removeIf((Person person)-> person.getPlaces(???));
我想从Place
符合以下条件的列表中删除某个人place.getTown()=="Paris"
如何编写此代码?
答案 0 :(得分:10)
将方法 hasPlace 添加到Person类:
public boolean hasPlace(String townName) {
return places.stream()
.map(Place::getTown)
.anyMatch(townName::equals);
}
然后,您可以在给予removeIf语句的谓词中使用它:
persons.removeIf(person -> person.hasPlace("Paris"));
答案 1 :(得分:6)
对Places
列表进行简化,确定其中是否包含Place
为town
&#34;巴黎&#34;
persons.removeIf(p-> p.getPlaces().stream().anyMatch(pl->pl.getTown().equals("Paris")));
express.static
答案 2 :(得分:0)
如果您不想使用removeIf方法,可以使用Filter to
persons.stream().filter(p-> !p.getPlaces().stream().anyMatch(pl->pl.getTown().equals("Paris")));