java - 使用方法引用从列表中删除元素

标签 java java-8

我的代码有什么问题?

我想从 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/

相关文章:

java - 未找到 SSLSocket; Spring Roo 1.2.5、STS 3.6、SQLServer 驱动程序无法从 Class<AnyClassPK> 转换为 Class<?扩展可序列化>

java - 使用数组而不是 Java 中的 ArrayList 从用户输入创建一个新对象

Java JFrame 布局

java - 如果无代码 : is it just an intellectual challenge or is it concretely useful?

java - 无法使用 neo4j spring 数据向一个节点添加更多关系

java - 带有和不带有 JAXBElement 的 jaxb 解码器

Java 8 流 : average and count at once

java - Swing 应用程序从 Java 1.7 升级到 1.8

java - 功能接口(interface)作为功能引用

java-8 - 从列表 java8 中删除重复项