如果他的列表符合条件,如何使用Collection删除?

时间:2017-12-27 11:51:48

标签: java java-8

我有一个包含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"

如何编写此代码?

3 个答案:

答案 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列表进行简化,确定其中是否包含Placetown&#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")));