繁体   English   中英

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

[英]How to search a string element in a class arraylist? (java)

我的问题是,有一个方法printPetInfoByName()在宠物列表中搜索给定名称的每个宠物,并使用toString()方法打印宠物的信息。 arraylist的类型为Pet,其名称是通过main方法指定的(我尚未对其进行编码)我需要通过搜索arraylist使用toString()打印宠物的信息。 如果给定名称存在于列表中,则它将打印信息。

我的代码看起来像这样 在此处输入图片说明

但是它会产生错误>不兼容的类型:如果我写了(String search:list),则Pet不能转换为第20行的CharSequence,那么它给出的错误是Pet不能转换为第18行的字符串

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

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

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

String.contains检查字符串中是否存在子字符串。 它以CharSequence作为参数,现在您给它一个Pet。 那就是为什么你得到错误。

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

我认为您应该首先开始工作。 但是,如果您有兴趣,在使用Collections时,java 8流是一个很好的工具。 这是使用它们可以解决您的问题的方法:

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

list.stream() “启动”流。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM