質問

簡単なものでなければなりません。

私は、バイナリデータの長いシーケンスを処理しようとしているScalaに取り組んでいます。これは、0と1の長いリストです。この種のデータを保存/アクセスする「最良の」方法は何ですか。

ここで重要なポイントはメモリの最適化ですので、バイト全体を使用してブール値を保存しないようにしたいと思います。また、アクセスは何らかの重要なものなので、バイトにただこになり、次に配列に入れることを避けたいと思います。

ビットマップは良い考えですか? Scalaにそのようなクラスはありますか?

そうでない場合、bytearrayを使用するのが最善でしょうか?これをどのように実装しますか?

他にアイデアはありますか?

ありがとう、

役に立ちましたか?

解決

java.util.bitsetを使用できます(おそらく、巧妙な説明をして、よりscalaのようにするためにカップルが必要です)。

それでもコストがかかりすぎる場合は、内部で配列を使用するクラスを書き、ビットをINTまたはバイトに詰め込みます。

他のヒント

あなたの値が均一に分布していない場合(1よりも大幅に0S)使用できます ランレングスエンコーディング 画像データをエンコードします。これは、FAXで使用されるエンコードです。

2つのエンコードオプションがあります。

  • 白黒にRLEを使用してください
  • 1つの色にRLEのみを使用し、他の色(または混合セクション)をエンコードする場合は直接エンコードを使用します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top