我需要一个 Map,但是当我调用 get(key, n) 时,它不仅应该返回具有搜索键值的所有记录,而且还应该返回键的最后 n 个有效位与搜索相同的所有记录key(例如应用类似 key&(1<<(n+1)-1) 的东西)。
是否已经在 Java 中实现了类似的东西?
最佳答案
不完全是,但你可以使用 NavigableMap.subMap实现这一点。例如
NavigableMap<Integer, Value> map =
int keyBase = key & ~((1 << n)-1);
Map<Integer, Value> subMap = map.subMap(keyBase, true, keyBase + (1 << n), false);
如果要根据最低位而不是最高位进行搜索,则必须在添加和搜索之前反转位。这会将最低位、第二低位、第三低位等组合在一起。
关于java - Java 世界中有可变键长的 Map 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881060/