我的代码有什么问题?
我想从 List
list
中删除所有以 A 开头的元素:
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]
}
但是,removeIf
不会从列表中删除任何内容。
最佳答案
"A"::startsWith
是可以分配给 Predicate<String>
的方法引用,当那个Predicate<String>
针对其他一些 String
进行了测试, 它会检查字符串 "A"
是否从另一个 String
开始,而不是相反。
list.removeIf(TTT)
不会从 list
中删除任何内容,因为“A”既不以“魔术师”也不以“助手”开头。
您可以改用 lambda 表达式:
Predicate<String> TTT = s -> s.startsWith("A");
你原来的唯一途径"A"::startsWith
如果列表包含 String
,谓词将从列表中删除任何内容"A"
或一个空的 String
.
关于java - 使用方法引用从列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45187017/