В настоящее время после операции map
у вас есть Stream<List<String>>
, и вы пытаетесь сравнить его с String
, следовательно, никогда не дадите ожидаемого результата.
Теперь к решению; из того, что я могу собрать, кажется, что вы хотите сохранить всю строку, если TIMESTAMP
и RESPONSETIME
являются действительными целыми числами.
Один из способов сделать это:
List<String> rows = br.lines()
.skip(1) // skip headers
.map(s -> new AbstractMap.SimpleEntry<>(s,s.split(DILIMETER)))
.filter(a -> isInteger(a.getValue()[0]) && isInteger(a.getValue()[2]))
.map(AbstractMap.SimpleEntry::getKey)
.collect(Collectors.toList());
и функция isInteger
определяется следующим образом:
public static boolean isInteger(String input)
{
if(input == null || input.trim().isEmpty()) return false;
for (char c : input.toCharArray())
if (!Character.isDigit(c)) return false;
return true;
}
Другое решение заключается в том, что если вы хотите получить List<String[]>
, где каждый массив представляет отдельные данные каждой строки, то вы можете сделать:
List<String[]> rows = br.lines()
.skip(1) // skip headers
.map(s -> s.split(DILIMETER))
.filter(a -> isInteger(a[0]) && isInteger(a[2]))
.collect(Collectors.toList());
Примечание : если читаемый файл содержит только данные без заголовков, то нет необходимости выполнять операцию skip
.