В проекте класса мы читаем в названии, исполнителе и текстах 10 514 песен, содержащихся в одном текстовом файле. В текущем разделе проекта мы написали упорядоченный развернутый связанный список и запустили поиск в поле заголовка. Компаратор также был написан для сортировки списка по заголовку. Мы должны отслеживать сравнения, необходимые для поиска совпадений
При тестировании я получаю странные результаты. Например, запустив поиск
angel возвращает 23 совпадения и требует 552 сравнений, что соответствует ответу профессора
t возвращает ноль совпадений и требует 9530 сравнений, где ожидалось 1148 совпадений
ta возвращает 62 совпадения и требует 8455 сравнений
s не возвращает совпадений и требуется 8383 сравнения
sa возвращает 89 совпадений и требуется 7355 сравнений
Мой алгоритм поиска работает так:
- перебрать список, чтобы найти первое совпадение
- перебрать список, чтобы найти первый экземпляр, который не соответствует полю поиска
- отправляет начальный и конечный объекты в метод Sublist структуры данных, который проходит по этим двум объектам и создает отдельный список совпадений
- возврат списка матчей
Для первого и второго шагов я сравниваю текущее значение с искомым с помощью
if (currentSong.getTitle().toLowerCase().startsWith(titleSearch))
Что это за строка кода, которая возвращает false при поиске одной буквы, но когда добавляется a, значения найдены? Предпочтительно, я хотел бы решение, которое не потребовало бы от меня вручную пройти через 8000 с лишним итераций цикла в отладчике. Кроме того, профессор предоставил тестам структуру с ожидаемыми значениями, и мой код прошел все тесты.