2

スペース効率の良い方法で実装に多数のLong値を格納する必要があります。SortedSetビットセットの実装を検討していたところ、 Javaewahを発見しました。ただし、API はsintではなく値を想定していますlong

誰かが代替案を推奨したり、この問題を解決する良い方法を提案したりできますか? 私は主にスペース効率に関心があります。セットを作成したら、最小要素と最大要素に 1 回アクセスする必要があります。ただし、アクセス時間は大きな問題ではありません (つまり、完全にランレングスでエンコードされた実装で問題ありません)。

編集

コレクションの最小要素と最大要素にアクセスできるのであれば、実装でインターフェイス実装する必要がないことは明らかです。SortedSet

4

2 に答える 2

1

Set があるかどうか、または通常の JCF と比較してどれだけ効率的かはわかりませんが、これを見てください。

http://commons.apache.org/primitives/

于 2011-09-05T11:29:53.460 に答える
1

下を使用する TLongArrayList を使用できlong[]ます。sort()最小値と最大値が最初と最後の値になるようにサポートします。

または、long[]a を長さとともに使用して、これを自分で行うこともできます。;)

これにより、生の値自体よりも約 64 バイト多く使用されます。long 値の範囲についていくつかの仮定を立てることができれば、よりコンパクトにすることができます。たとえば、実際に 48 ビットに制限されている場合などです。

LongBuffer の使用を検討してください。メモリ マップされている場合は、ヒープまたは直接メモリの使用を回避しますが、並べ替えルーチンを自分で実装する必要があります。


それらがクラスター化されている場合、データを一連の範囲として表すことができる場合があります。範囲は、純粋な A - B、または開始値を持つ BitSet です。後者は電話番号に適しています。;)

于 2011-09-05T13:28:28.613 に答える