k никогда не будет увеличено, если текущая строка не содержит того, что находится в bList @ index k, и поэтому будет застрять в этом слове.
, если currentline содержит вещь в bList else if (myList.size() == bList.size())
не будет выполнена и вы не хотите использовать break, это просто плохой стиль. Вместо этого go для while(... && myList.size() < bList.size()
)
Также я не понимаю логики c, стоящие за добавлением одной и той же строки в myList несколько раз, вы, вероятно, захотите перебрать другие строки.
Какова цель bufferedReader.mark(0);
?
Вот некоторый код, который должен делать то, что вы хотите:
LinkedList<String> found = new LinkedList<String>();
while ((currentLine = bufferedReader.readLine()) != null) {
foreach(String word : bList){
if(!found.contains(word) && currentline.contains(word)){
myList.add(currentLine);
found.add(word);
break;
}
}
}
это добавляет каждую строку в myList в первый раз, когда он содержит слово из Blist. в качестве альтернативы вы можете удалить слово из bList, если вам больше не нужен bList.