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

时间:2017-04-15 17:26:21

标签: java list contains

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

    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 lang字符串,感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

此代码将涵盖您在列表的多行中具有您的山丘名称的情况。只需使用要搜索的属性的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));

            }

您不需要“仅”使用您尝试过的包含。

答案 1 :(得分:0)

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

可以contains类添加Hill方法;但是我不希望Hill有一个contains方法 - 除了岩石,泥炭和偶尔的水力发电站之外,山丘还包含什么? :)如果名称包含参数,我当然不希望contains(String)方法返回true。

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

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

你没有给出Hill类的定义,所以我假设这个名字有一个访问者。但它不一定是这样的:你可以调用HillList.get(i).toString().contains(HillName)或其他东西,只要该方法返回包含你正在寻找的东西的字符串。

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

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

如果HillList.get(i)例如HillList,则重复调用LinkedList会更加冗长,容易出错,效率可能会降低。 HillList

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

答案 2 :(得分:-2)

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

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

因此,不是手动迭代你的HillList,而是contains()方法为你做的,同时将参数的条目与equals()进行比较。

此外,您可以打印输入而不是匹配的HillList条目,因为它们是相同的。

编辑:仅当您的HillList是字符串列表

时才有效