我的代码出了什么问题?
我想删除所有的元素开始一个来自List list:
public static void main(String[] args) {
Predicate<String> TTT = "A"::startsWith;
List<String> list = new ArrayList<>();
list.add("Magician");
list.add("Assistant");
System.out.println(list); // [Magician, Assistant]
list.removeIf(TTT);
System.out.println(list); // expected output: [Magician]
}
Run Code Online (Sandbox Code Playgroud)
但是,removeIf不会从列表中删除任何内容.
"A"::startsWith是一个可以分配给a的方法引用,Predicate<String>当Predicate<String>针对其他方法进行测试时String,它会检查String是否以其他方式"A"开始String,而不是相反.
list.removeIf(TTT)不会删除任何东西list,因为"A"既不是以"魔术师"也不是"助手"开头的.
您可以使用lambda表达式:
Predicate<String> TTT = s -> s.startsWith("A");
Run Code Online (Sandbox Code Playgroud)
原始"A"::startsWith谓词从列表中删除任何内容的唯一方法是列表是否包含String "A"空格式String.