Прежде всего, не объявляйте вашу переменную списком LinkedList, объявляйте его списком (части кода, не относящиеся к списку, удалены:
public class WordSearch
{
List<String> lxx;
public WordSearch(String wordlist)
throws IOException
{
lxx = new LinkedList<String>();
}
}
Далее не вызывайте get в списке, использование LinkedList будет ОЧЕНЬ медленным. Вместо этого используйте итератор ... еще лучше используйте новый стиль для цикла, который использует итератор для вас:
public boolean inTheList (String theWord)
{
for(String word : lxx)
{
if (theWord.compareToIgnoreCase(word) == 0)
{
return true;
}
}
return false;
}
Затем измените новый LinkedList на новый ArrayList:
lxx = new ArrayList ();
Этот код должен быть быстрее, но вы все равно можете сделать лучше.
Поскольку вас не волнуют повторяющиеся слова, используйте Set вместо List и используйте HashSet вместо ArrayList.
Это значительно ускорит программу.
Ваш оригинальный код, использующий LinkedList с get, должен начинаться с начала списка каждый раз при поиске следующего слова в списке. Использование Итератора (с помощью нового стиля для каждого цикла) останавливает это.
Использование LinkedList означает, что каждый раз, когда вам нужно перейти к следующему слову в списке, происходит поиск, ArrayList не имеет таких издержек.
Использование HashSet завершается (вероятно) использованием древовидной структуры, которая имеет очень быстрый поиск.