2013-04-04 4 views
0

Мой метод поиска отлично подходит для строк одного слова, но не для двух слов и более.Как искать строку, содержащую несколько слов в ArrayList?

Я должен проверить, чтобы увидеть, если titleToFind соответствует название DVD в

ArrayList<DVD>DVDlist 

Мой метод поиска:

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

Я не знаю, как подойти к этой проблеме.

+2

'equalsIgnoreCase' не заботится о том, сколько слов ваши строки. если они равны, они равны. Может быть, вы ищете 'contains' вместо этого? – NilsH

+0

Я согласен с NilsH. Если вам не удается найти строки, содержащие более одного слова, проблема не в вашей функции поиска, а в чем-то другом, и нам нужно будет увидеть больше кода с примерами входов/результатов. – Grambot

+1

Основываясь на ответах, возникает некоторая путаница. Проблема в том, что вы не можете получить больше одного результата из поиска или что ваш поиск не соответствует чему-либо, если вы используете несколько слов? – NilsH

ответ

0

Основная проблема заключается в том, что вы прекращаете поиск, когда вы нажимаете первое совпадение (оператор возврата в цикле). Ниже приведен пример возврата списка, содержащего все совпадения.

Если вам не разрешено использовать список, вы можете вернуть 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

+0

@trama: Не могли бы вы объяснить, почему вам запрещено? – VirtualTroll

Смежные вопросы