1 つまたは別の git でいくつかのコードを見ると|=
、単純な代入で十分な場合に、開発者がビットごとの包括的 OR 複合代入演算子 ( ) を使用していることがわかります。残念ながら、私はこのソリューションのコードを手元に持っていないので、できる限り説明しようと思います。
たとえば、Java に次のコードがあるとします。
boolean found = false;
for (String s : stringSet) {
if (s == null || s.equals("")) {
found |= true; // <== this line
}
}
if (!found) {
System.out.println("No interesting string found");
}
指摘された線についてのみ質問します。なぜ人々はこのようにするのですか?何十億、何兆という非常に大量のデータを反復処理できることを理解しています。しかし、尖った線は効率をそんなに劇的に変えるのでしょうか? 単純な代入に変更すると、多くのデータで著しく遅くなりますfound = true;
か?
速度が主な議論ではない可能性を排除しませんが、それは私にとって最も意味があるように思えました.
はい、このコードをメソッドまたはストリームに変換できることは知っていますが、これはコードを単純化したものにすぎず、はるかに複雑になる場合などがあります。ポイントされた行の前 (または の前でさえもif
) には、大量の何か意味のあることをするコード。「代わりにストリームを使用する」などの提案はしないでください。Javaの高度な方法はすでに知っているからです。ビット単位の包括的 OR を使用して、このやや謎めいたソリューションの現象を理解したいと思います。