0
的謂詞行爲我有一個名稱和年齡成員變量的人類。我有兩個謂詞方法如下。List.removeIf()
static Predicate<Person> isAbove20(){
return p -> p.getAge() > 20;
}
static Predicate<Person> isNameEqualTo(String name){
return p -> p.getName().equals(name);
}
我有一個Person和幾行代碼的列表如下。
List<Person> people = new ArrayList<>();
people.add(new Person("raj", 20));
people.add(new Person("bini", 15));
people.add(new Person("tom", 25));
people.add(new Person("rock", 12));
print(people);
people.removeIf(Predicates.isNameEqualTo("rock").and(Predicates.isAbove20()));
System.out.println("**** after applying predicates ****");
print(people);
在運行這段代碼我得到的輸出
Person{name='raj', age=20}
Person{name='bini', age=15}
Person{name='tom', age=25}
Person{name='rock', age=12}
**** after applying predicates ****
Person{name='raj', age=20}
Person{name='bini', age=15}
Person{name='tom', age=25}
Person{name='rock', age=12}
我期待它來除去2人從列表.i.e對象。岩石(用於名稱爲「石頭」)和湯姆(年齡大於20))打印清單內容
Person{name='raj', age=20}
Person{name='bini', age=15}
可能有人請解釋爲什麼它打印整個列表,因爲它已創建。
謝謝。
明白了。我認爲它會應用第一個謂詞並使用結果列表來應用第二個謂詞。感謝澄清。 – user6604211