如何在类arraylist中搜索字符串元素? (Java)的

时间:2015-05-16 08:31:41

标签: java arraylist

我的问题是有一个方法printPetInfoByName()在宠物列表中搜索给定名称的每个宠物,并使用toString()方法打印宠物的信息。 arraylist是Pet类型,名称是从main方法给出的(我还没编码) 我需要通过搜索arraylist来使用toString()来打印宠物的信息。如果列表中存在给定名称,则它将打印信息。

我的代码看起来像enter image description here

但它会产生错误>不兼容的类型:Pet不能转换为第20行的CharSequence 如果我写的(字符串搜索:列表) 然后它给出错误,Pet不能转换为第18行的字符串

3 个答案:

答案 0 :(得分:1)

使用以下代码为您的方法:

public void printPetInfoByName(String name) {
    for (Pet search : list)
        if (search.getName().contains(name))
            search.toString(); //System.out.println(search.toString());
}

在抽象类 Pet 中定义toString方法。

答案 1 :(得分:0)

String.contains检查字符串中是否存在子字符串。它需要一个CharSequence作为参数,你现在给它一个Pet。这就是你得到错误的原因。

我假设您的宠物上有某种名称字段,您可以使用get方法访问它?不要检查字符串是否包含宠物,而是考虑询问宠物的名字是否等于搜索字符串。

我认为你应该先按照自己的方式工作。但是,如果您感兴趣,使用集合时,java 8流是一个很好的工具。以下是使用它们解决问题的方法:

list.stream()
            .filter(p -> p.getName().equals(name))
            .forEach(System.out::println);

list.stream()“启动”流。

filter过滤所有元素p,其中p的名称等于您作为参数传递的名称。

forEach为流中的所有元素执行某些操作。请注意,通过过滤它,剩余的元素是我们想要的。

答案 2 :(得分:0)

字符串无法与复杂对象进行比较。它们的类型不同,因此您的程序不知道如何使用它。