java - List<String> 类型中的方法 get(int) 不适用于 Java 8 中的参数字符串

标签 java java-8 java-stream predicate

我正在尝试在 List<String> 中搜索元素我得到了这个编译错误:

the method get(int) in the type List<String> is not applicable for the argument string.

这是代码:

private boolean findIdInTheList(List<String> ids, String id) {
    String theId = ids.stream()
            .filter(elem -> id.equals(ids.get(elem)))
            .findAny()
            .orElse(null);
}

最佳答案

idsList<String>elemString .因此ids.get(elem)无效,因为 List没有 get采用 String 的方法.

应该是:

private boolean findIdInTheList(List<String> ids, String id) {
    String theId = ids.stream()
                      .filter(elem -> id.equals(elem))
                      .findAny()
                      .orElse(null);
}

哦,因为你的方法有一个 boolean返回类型,你应该添加一个返回语句。

您可以使用 anyMatch 简化管道:

private boolean findIdInTheList(List<String> ids, String id) {
    return ids.stream()
              .anyMatch(elem -> id.equals(elem));
}

在这里你得到一个boolean这表示是否idList 中找到.我认为返回 String 没有意义本身,因为你已经知道它等于 id .

关于java - List<String> 类型中的方法 get(int) 不适用于 Java 8 中的参数字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55489865/

相关文章:

java - 如何上传在同一页面上显示的图像?

Java Stream Api - 是否可以保留原始 map() 输入?

java streams - 使用值的条件从集合映射中收集元素

java - 使用 Spring MVC 表单提交 portlet

java - 使用蓝牙将电脑连接到 Android 手机

java - spinner.setAdapter(适配器) 导致 "A resource was acquired at attached stack trace but never released"错误并应用程序强制关闭

java - 如何从流中获取随机对象

Java 8流聚合一张图

Java Stream API 比较数组中的字符串

Java 8 & NIO/读取行 -> 收集到实体