有没有办法像这样在 BTreeMap
中使用字节数组作为键:
BTreeMap<byte[], Integer> myBTreeMap = db.getTreeMap("myBTreeMap");
目前在尝试将新对象放入 map 时抛出此异常:
Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.lang.Comparable ...
使它起作用的正确方法是什么?我想知道不使用包装类的解决方案。
欢迎提出任何想法。
[更新]
我使用了 SJuan76 提出的解决方案:
BTreeMap<byte[], Integer> myBTreeMap = db.createTreeMap("myBTreeMap")
.comparator(SignedBytes.lexicographicalComparator())
.makeOrGet();
如果需要,可以在 Guava 库中找到使用过的比较器。
最佳答案
MapDB提供byte[]数组比较器:Fun.BYTE_ARRAY_COMPARATOR
这是一个如何在代码中使用的示例:
Map<byte[], Object> map = db.createTreeMap("map")
.comparator(Fun.BYTE_ARRAY_COMPARATOR)
.makeOrGet();
关于java - MapDB实现BTreeMap时如何使用byte数组作为key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24670628/