У моего коллеги была ошибка, связанная с нашим предположением, что пустой поток, вызывающий allMatch(), вернет false.
if (myItems.allMatch(i -> i.isValid()) { 
    //do something
}
Конечно, это наша вина за допущение и не чтение документации. Но я не понимаю, почему поведение allMatch() по умолчанию для пустого потока возвращает true. Каковы были причины для этого? Подобно anyMatch() (который возвращает false), эта операция используется императивным способом, который отсылает монаду и, вероятно, используется в инструкции if. Учитывая эти факты, существует ли какая-либо причина, почему для большинства применений желательно иметь allMatch() по умолчанию true в пустом потоке?