質問
簡単なものでなければなりません。
私は、バイナリデータの長いシーケンスを処理しようとしているScalaに取り組んでいます。これは、0と1の長いリストです。この種のデータを保存/アクセスする「最良の」方法は何ですか。
ここで重要なポイントはメモリの最適化ですので、バイト全体を使用してブール値を保存しないようにしたいと思います。また、アクセスは何らかの重要なものなので、バイトにただこになり、次に配列に入れることを避けたいと思います。
ビットマップは良い考えですか? Scalaにそのようなクラスはありますか?
そうでない場合、bytearrayを使用するのが最善でしょうか?これをどのように実装しますか?
他にアイデアはありますか?
ありがとう、
解決
java.util.bitsetを使用できます(おそらく、巧妙な説明をして、よりscalaのようにするためにカップルが必要です)。
それでもコストがかかりすぎる場合は、内部で配列を使用するクラスを書き、ビットをINTまたはバイトに詰め込みます。
他のヒント
あなたの値が均一に分布していない場合(1よりも大幅に0S)使用できます ランレングスエンコーディング 画像データをエンコードします。これは、FAXで使用されるエンコードです。
2つのエンコードオプションがあります。
- 白黒にRLEを使用してください
- 1つの色にRLEのみを使用し、他の色(または混合セクション)をエンコードする場合は直接エンコードを使用します
所属していません StackOverflow