sまたはBitSet?特定のBitSetメソッドは使用されず、get/set/clearのみが使用されます(==、=、Arrayの場合はArrays.fill)。[]よりもメモリ効率が高くなります。配列内の各ブール値は1バイトを取ります。runtime.freeMemory()からの数値は、BitSetでは少し混乱しますが、それよりも少なくなります。[]は、サイズがほぼ等しい非常に大きなサイズを除いて、CPUの効率が高くなります。[]は約4倍高速になります(6ミリ秒と27ミリ秒など)。1,000万と1億の場合、それらはほぼ均等です。ブール値ごとに約4〜20バイトを使用します。ブール値ごとに約1バイトを使用します。ブール値ごとに約1ビットを使用します。メモリサイズは問題にならないかもしれません。[]の方がコーディングが簡単かもしれません。3質問の少し左のフィールドですが、ストレージが懸念される場合は、ハフマン圧縮について調べます。同等のものに絞ることができます。複雑な表現が必要になります。超えて、その使用によりストレージの利点が得られる場合があります。[]三角行列を比較したMemory/Timeベンチマークを見ることができます。明確な意味を持ちます。implementation.Javaライブラリクラスのソースは公開されており、自分で簡単に確認できます。words;速度について;それは何をしているのかによります。一般に、速度について事前に考えないでください。意味的に最も意味のあるツールを使用し、最も明確なコードを導きます。パフォーマンス要件が満たされていないことを確認し、ボトルネックを特定した後にのみ最適化します。SOにアクセスして、AがBより速いかどうかを尋ねるのは、次のようなさまざまな理由で愚かなことです。それはアプリケーションに依存しますが、通常は応答する誰もアクセスできません。使用されているコンテキストで分析し、プロファイルします。実際に最適化する価値のあるボトルネックであることを確認してください。速度について質問するこのような質問は、一般に、OPは効率を重視しているが、プロファイリングを望んでおらず、パフォーマンス要件を定義していなかったことを示しています。水面下では、通常、OPは間違ったパスに向かっているという赤い旗です。これは古い質問ですが、最近出てきました。これは追加する価値があると思います。