Java 查看列表是否包含字符串

Java seeing if list contains string

我正在尝试逐行遍历列表,以检查是否可以找到用户输入的字符串,如果可以,则打印该行。这是我目前所拥有的

    while(true) {
        System.out.println("Please enter a hill name or quit to exit: ");
        String HillName = input.next();
        if (HillName.equals("quit")) {
            break;
        }
        else {
            for(int i=0; i < HillList.size(); i++) {
                if (HillList.get(i).contains(HillName)) {
                    System.out.println(HillList.get(i));
                }
            }
        }
    }

我收到一个关于包含的错误,说无法解析符号方法包含 java 语言字符串,任何帮助都将不胜感激。

此代码将涵盖您的山名在列表的几行中的情况。只需使用要搜索的 属性 的 getterMethod 设置 $$getYourHillProperyName$$。

     while(true) {
            System.out.println("Please enter a hill name or quit to exit: ");
            String HillName = input.next();
            if (HillName.equals("quit")) {
                break;
            }
            else {
events
.stream()
.filter(e-> e.$$getYourHillProperyName$$.contains(HillName))
.forEach(xx->System.out.println(xx));

            }

您不需要 "for" 只需使用您尝试过的包含即可。

另一个解决方法是用这个替换你的循环:

if(HillList.contains(HillName)) {
    System.out.print(HillName);
}

因此,contains() 方法不是手动遍历 HillList,而是在使用 equals() 将条目与您的参数进行比较时为您完成。

您也可以只打印您的输入而不是匹配的 HillList 条目,因为它们是相等的。

编辑:这仅在您的 HillList 是字符串列表时有效

问题是 HillList.get(i) 表达式的引用类型没有 contains 方法。 HillList 的类型为 List<Hill>,因此 HillList.get(i) 的类型为 Hill

可以Hillclass添加一个contains方法;但我不希望 Hillcontains 方法 - 除了岩石、泥炭和偶尔的水力发电站之外,山丘包含什么? :) 如果 contains(String) 方法的名称包含参数,我当然不会期望 return 为真。

看起来您实际上是在尝试打印名称包含某些子字符串的山丘。例如,如果您输入 Ben,您可能会为 Ben NevisBen Lawers 等打印 Hill 个实例。如果是这种情况,它看起来更合乎逻辑检查是获取 HillList.get(i) 的名称,并在 that 上调用 contains,例如

if (HillList.get(i).getName().contains(HillName)) {
  // ...
}

您还没有给出 Hill class 的定义,所以我假设有一个这样的名称访问器。但这不一定是那样:您可以调用 HillList.get(i).toString().contains(HillName) 或其他方法,前提是方法 returns 字符串包含您要查找的内容。


请注意,编写循环的更好方法是使用增强的 for 循环:

for (Hill hill : HillList) {
  if (hill.getName().contains(HillName)) {
    System.out.println(hill);
  }
}

如果 HillList 是例如LinkedList.

(另请注意,按照惯例,HillList 应称为 hillList,因为变量以小写字母开头)。