2013-04-04 113 views
0

我的搜索方法适用于一个单词字符串,但不适用于两个单词或更多。如何搜索ArrayList中包含多个单词的字符串?

我应该检查,看看是否titleToFind在

ArrayList<DVD>DVDlist 

我的搜索方法相匹配的DVD标题:

public DVD search(String titleToFind) { 
    for (DVD dvdEntry : DVDlist) { 
     if (dvdEntry.GetTitle().equalsIgnoreCase(titleToFind)) { 
      return dvdEntry; 
     } 
    } 
    return null; 
} 

我不知道如何解决这个问题。

+2

'equalsIgnoreCase' does not不在乎你的字符串有多少字。如果他们平等,他们是平等的。也许你正在寻找'contains'来代替? – NilsH 2013-04-04 17:51:56

+0

我同意NilsH。如果您无法找到包含多个单词的字符串,那么问题不在于您的搜索功能,而在于其他功能,我们需要查看更多带有示例输入/结果的代码。 – Grambot 2013-04-04 17:57:36

+1

根据答案,有一些混淆。问题是您无法从搜索中获得多个结果,或者您使用多个单词时搜索不匹配的问题? – NilsH 2013-04-04 18:00:47

回答

0

你的主要问题是,当你打你的第一个匹配(循环中的return语句)时,你停止搜索。以下是返回包含所有匹配项的列表的示例。

如果您不被允许使用列表,您可以返回一个int(匹配数)或csv匹配。

public List<DVD> search(String titleToFind) { 
    List<DVD> matches = new ArrayList<DVD>();  
    for (DVD dvdEntry : DVDlist) { 
     if (dvdEntry.GetTitle().equalsIgnoreCase(titleToFind)) { 
      matches.add(dvdEntry); 
     } 
    } 

    return matches; 
} 
+0

我不允许我使用另一个ArrayList – trama 2013-04-04 17:54:49

+0

@trama:你能解释为什么你不被允许吗? – VirtualTroll 2013-04-04 17:56:26

相关问题