Используйте регулярное выражение:
Pattern pattern = Pattern.compile("INFO|Error|Debug|Failed|Unable");
for(String line : lines){
if(pattern.matcher(line).find()){
System.out.println(line);
}
}
При этом будет напечатана каждая строка, содержащая одно или несколько указанных ключевых слов.
Для получения дополнительной информации см. Руководство по регулярным выражениям .
Кроме того, вы можете еще больше улучшить это, если разрешите механизму регулярных выражений выполнять разбиение строк вместо прохождения отдельных строк:
Pattern pattern = Pattern.compile("^.*(?:INFO|Error|Debug|Failed|Unable).*$",
Pattern.MULTILINE);
Matcher matcher = pattern.matcher(theWholeSourceText);
while(matcher.find()){
System.out.println(matcher.group());
}
Обновление: Хорошо, если шаблон динамический, вы можете просто построить его динамически из своего списка:
StringBuilder sb = new StringBuilder();
sb.append("^.*(?:");
Iterator<String> it = patternsList.iterator();
if(it.hasNext())sb.append(it.next());
while(it.hasNext())sb.append('|').append(it.next());
sb.append(").*$");
Matcher matcher = Pattern.compile(sb.toString(), Pattern.MULTILINE)
.matcher(theWholeSourceText);
while(matcher.find()){
System.out.println(matcher.group());
}