我正在寻找一种方法来编码 Java 中的枚举值序列,它比每个元素的一个对象引用更好。在幻想代码中:
List<MyEnum> list = new EnumList<MyEnum>(MyEnum.class);
原则上应该可以使用每个元素的比特来编码每个元素。是否有一个现有的实现,或者一个简单的方法来做到这一点?log2(MyEnum.values().length)
有一个类将任意基数的数字序列(即如果有 5 个可能的枚举值,则使用基数 5)编码为字节序列就足够了,因为可以使用一个简单的包装类来实现List<MyEnum>
.
我更喜欢一个通用的现有解决方案,但作为一个穷人的解决方案,我可能只使用一个 long 数组并将尽可能多的元素基数编码到每个 long 中。使用 5 个枚举值,27 个元素将适合 long 并且仅浪费约 1.3 位,这非常好。
注意:我不是在寻找一套实现。那不会保留序列。