2015-12-10 32 views

回答

4

NormalizableKey接口定义的方法,以产生一个固定长度的二进制前缀键,即一个字节序列。前缀键的用途是直接比较原始字节上的值而不使用昂贵的对象反序列化。

这样一个固定长度的前缀密钥很容易获得整数值,如Integer,LongShort。然而,浮点值(FloatDouble)的二进制表示从整数值不同,由三个部分组成:一个指数,一小部分,和一个符号位。由于这种表示,浮点值可以覆盖巨大的值域(以精度为代价)。浮点值的二进制表示可以在不进行反序列化的情况下进行比较,并不像整数值那样容易定义。而且,规范化密钥最常见的用例是分组或加入。由于这些操作需要对象相等,所以它们在浮点值中不常见。

这就是为什么FloatValueDoubleValue没有实现NormalizableKey接口。标准化的键将有助于对浮点值的数据进行排序。

+0

感谢您的详细信息! – readman