ChronicleMap的GitHub肯定有关于ChronicleMap中 Multimaps 的免责声明:
纪事地图不是......
......没有二级索引.
多图.使用
ChronicleMap<K, Collection<V>>as multimap在技术上是可行的,但往往会导致问题......
不幸的是,这是我的一个用例,并且使用堆外存储(使用ChronicleMap)肯定是最简单的方法.
让我试着用披萨来解释我的问题.我有10万种不同的比萨饼.每个披萨都有一个ID和许多不同的浇头和面包皮.我有三种访问模式:
我可以用a轻松存放比萨饼ChronicleMap<UUID,Pizza>.但这只是一种访问模式.我不想遍历每一个披萨,找到具有匹配的顶部或外壳的披萨.所以,我想存储的东西像ChronicleMap<Topping,Collection<UUID>>和ChronicleMap<Crust,Collection<UUID>>.
然后,如果有人问我所有的意大利辣香肠披萨,我会在顶部的ChronicleMap中查找匹配的比萨饼的UUID,然后在主披萨地图中.
但上面引用的文档让我感到害怕.有谁知道这些事情经常导致的"问题"是什么?我为什么不这样做,即使它似乎对我有用?它是否与ChronicleMap如何存储序列化对象(特别是集合)有关?
针对潜在问题的一些补充说明: