Java 如何在ArrayList中搜索?

Java 如何在ArrayList中搜索?,java,arraylist,Java,Arraylist,我试着按书名找一本书 假设书中的丛林是存在的。我想找到它,即使我搜索 丛林:工作, 郑:工作, 钟:不起作用。 我希望你能理解。我使用匹配项在搜索中添加与该标题匹配的所有书籍。有人知道如何解决这个问题吗 public ArrayList<Book> search(String title){ ArrayList<Book> matches = new ArrayList<>(); for (Book b : Books){ S

我试着按书名找一本书

假设书中的丛林是存在的。我想找到它,即使我搜索

丛林:工作, 郑:工作, 钟:不起作用。 我希望你能理解。我使用匹配项在搜索中添加与该标题匹配的所有书籍。有人知道如何解决这个问题吗

public ArrayList<Book> search(String title){
    ArrayList<Book> matches = new ArrayList<>(); 
    for (Book b : Books){
        String s = b.getTitle();
        if(s.equalsIgnoreCase(title)||s.trim().contains(title))
            matches.add(b);
    }
    return matches;
}
contains是区分大小写的,因此如果您希望进行不区分大小写的搜索,那么一种常用的方法是强制双方使用相同的大小写上限或下限,这并不重要,只要双方都使用相同的大小写

s.trim().toUpperCase().contains(title.toUpperCase())

contains方法不区分大小写为什么Jung和not Jung?基本上将所有内容转换为大写或小写s.toUpperCase.containstitle。toUpperCase@azro你什么意思?Jung是原名,我的意思是,如果我用名字的一部分搜索,我可以找到这本书,但是如果我用名字的一部分搜索,但大写字母不在原名中是不起作用的。@Zuzu你最好解释一下编辑你的帖子,你的意思是必须是同一个单词zith不区分大小写,或者是单词的一部分区分大小写?Jung和Jung的奇怪区别在这里不起作用,但这是一个很好的解决方案,尽管它肯定会起作用,s Jungle将转换为Jungle,title Jung将转换为Jung,它包含在不是不区分大小写的搜索中,请参阅以获取可能导致问题的案例列表