Java 8で導入されたStream APIに関して、空のストリームに対するallMatchおよびnoneMatch終端操作は常にtrueを返す。なお、空ストリームに対する anyMatchは常にfalseを返す。
// 整数値は偶数か? IntPredicate isEven = n -> (n % 2 == 0); IntStream.empty().allMatch(isEven); // true IntStream.empty().noneMatch(isEven); // true IntStream.empty().anyMatch(isEven); // false
上記コードは “空ストリーム(空集合)の要素は全て偶数であり かつ 全て偶数ではない” を意味する。この振る舞いは集合論における "Vacuous Truth"*1 に対応する。
関連URL
*1:直訳すると「空虚な真」。wikipedia:en:Vacuous_truthも参照のこと。