要素ごとに 1 つ以上のオブジェクト参照をパックする Java で列挙値のシーケンスをエンコードする方法を探しています。ファンタジーコードでは:
List<MyEnum> list = new EnumList<MyEnum>(MyEnum.class);
原則として、要素ごとのビット数を使用して各要素をエンコードできる必要があります。これに対する既存の実装、またはそれを行う簡単な方法はありますか?log2(MyEnum.values().length)
単純なラッパー クラスを使用してList<MyEnum>
.
私は一般的な既存の解決策を好みますが、貧しい人の解決策として、long の配列を使用し、できるだけ多くの要素を各 long に基数エンコードするだけです。5 つの列挙値を使用すると、27 個の要素が long に収まり、1.3 ビットしか無駄にしません。これはかなり良いことです。
注: セットの実装を探しているわけではありません。それはシーケンスを保持しません。