我有一个关于使用 MapDB 的问题,尤其是关于查询子图的问题。我从https://github.com/jankotek/MapDB/blob/release-1.0/src/test/java/examples/TreeMap_Composite_Key.java的官方示例中获取代码片段。这个例子很容易理解。出于测试目的,我互换了“城镇”和“街道”的关键部分,并submap
以同样的方式调整了调用。不幸的是,现在地图不受submap
呼叫限制。而是返回整个地图(200 个条目)。以下是改编后的代码片段(在上面提到的示例之外)
// Initializing map
for (final String town : towns) {
for (final String street : streets) {
for (final int houseNum : houseNums) {
final Fun.Tuple3<String, String, Integer> address = Fun.t3(street, town,
houseNum);
final int income = r.nextInt(50000);
map.put(address, income);
}
}
}
...
final Map<Fun.Tuple3, Integer> housesInCong = map.subMap(
Fun.t3(null, "Cong", null), Fun.t3(Fun.HI, "Cong", Fun.HI));
//housesInCong.size() == 200 (should be 40)
System.out.println("There are " + housesInCong.size()+ " houses in Cong");
有人可以向我解释为什么会发生这种情况以及如何避免这种情况吗?我的项目中有一个类似的用例。
在此先感谢和问候:)