Избавляемся от всех отрицаний, используя закон Деморгана, так что
(!a || !b) => !(a && b)
вы можете использовать allMatch
как:
return listRows.stream()
.allMatch(row -> row.nameStr.equals(filter)
&& row.nameStr.contains(filter));
, который имеет аналогичную версию, используя noneMatch:
return listRows.stream()
.noneMatch(row -> (!row.nameStr.equals(filter)
|| !row.nameStr.contains(filter)));
Логическим улучшением в вашем коде может быть просто проверка на contains
, что также подразумевает equal
, это будет сокращено до:
return listRows.stream().allMatch(row -> row.nameStr.contains(filter));