2016-09-30 11 views
1

なぜjava.util.BitSetjava.util.Set<Integer>インターフェイスを実装していません。特にそういうときには簡単にできる。また、BitSetは、整数が「オンになっているかどうか」を維持するために使用され、Setもまったく同じです。従ってBitSetSet<Integer>です。java.util.BitSetがjava.util.Setを実装しないのはなぜですか

BitSetのメソッドを見てみましょう。このクラスの目的は、特定の順序であるビットの集合に対して論理演算を実行することです。

私はまだBitSetSet<Integer>であり、これも追加の操作セットを提供していると言います。コメントは十分にそれは明らかにしないので

+3

@ f1sh私はそれが議論の余地がある施設を食べていると確信しています。 –

+1

@djaqeelあなたはAndyTurnerのコメントを無関係にしましたが、私のものはありません。少なくともその2番目の部分です。しかし今、あなたはあなたの質問を編集した皆さんに、もう一度関連するように言っただけです。私のコメントの最初の部分はまだ私の最終的な答えです。 – f1sh

+2

BitSetはビットのベクトルですが、Setは重複しないオブジェクトの総称です。 「彼らは行動が異なり、まったく異なる目的を果たす」という声明。上記のホットドッグのコメントから完全にうまくまとめられています。 – hammerfest

答えて

0

あなたが言う「BitSetのが効果的、効率的なセットでのBitSetが設定されているが、」 - いいえそうではありません。 Setは、重複する要素を含まないコレクションです。

ここで、Set<Bit>を想像してください。ビットは1または0にしかならないので、最大サイズ2のかなり退屈なセットになります。

今度はthe methods of BitSetを見てください。このクラスの目的は、特定の順序であるビットの集合に対して論理演算を実行することです。それはSetとは関係ありません。

+0

OPは意味が完全に意味する 'Set 'を意味します。唯一の欠点は、すべてではなく、ある範囲の整数しか扱えないことです。そして、それらのビット単位の 'or'と' and'論理演算は、共用体と交差点に対応します。 –

+0

@TamasHegedusこの質問は、 '' Set ''と関係がありますか? OPの質問はかなり厳しいです。 – f1sh

+2

質問そのものは少し品質が低く、説明が必要ですが、私にとっては、それは明らかに 'Set 'です。 –

0

java.util.BitSetは、バージョン1.0以降はJDKにあり、java.util.SetはJDK 1.2でステージに入った。したがってBitSetSetを実装できません。

BitSetに裏打ちされたSet<>実装が必要な場合は、裏地BitSetを使用して実装することは難しくありません。

+0

また、['EnumSet'](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html)は、' Set'の実装です。 (a)メモリがコンパクトであり、(b)実行が非常に高速であるという利点があります。ビットベクトルとして内部的に表現されます。 –

+0

'Hashtable' /' Stack'/'Vector'はv1.0からJDKに入っていますが、まだ1.2で' Map'と 'List'を実装するために更新することができます。したがって、これは正当な理由ではありません。 –

関連する問題