My Favorite Things - Coding or die.

とある技術者の経験記録、的な。

全てがtrue、1つでもtrueを判定するイディオム(Java)

よくありがちな実装のJavaコードイディオム。

// 全てがtrueか?
boolean flag = true;
for (boolean bit : bits) flag &= bit;

// 1つでもtrueか?
boolean flag = false;
for (boolean bit : bits) flag |= bit;

ちなみにScalaだと以下のように書ける。

// 全てがtrueか?
Boolean flag = bits.foldLeft(true)(_ && _)

// 1つでもtrueか?
Boolean flag = bits.foldLeft(false)(_ || _)

というかScalaの畳み込み処理から着想を得て行き着いたのが、先のJavaコード。