質問

多数を保管する必要があります Long aの値 SortedSet 空間効率の良い方法での実装。私はビットセットの実装を検討していて、発見しました Javaewah. 。ただし、APIは期待しています int ではなく値 longs。

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

編集

実装が明確になるはずです する必要はない 実装します SortedSet コレクションの最小要素と最大要素にアクセスできます。

役に立ちましたか?

解決

aを使用するtlongarrayListを使用できます long[] その下。サポートします sort() したがって、MinとMaxは最初と最後の値になります。

または、aを使用できます long[] 長さでこれを自分で行います。 ;)

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

Longbufferの使用を検討する場合があります。メモリがマッピングされている場合、ヒープまたは直接メモリの使用を避けますが、自分でソートルーチンを実装することができます。


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

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top