我使用包含一些属性和一千个浮点值(double [])的数组的消息。使用协议缓冲区序列化消息时,感谢" packed = true"指令,双值被对齐并紧凑地存储在消息中。
但默认情况下,为该消息生成的Java类将double数组表示为数组列表(!),将原始double值赋值为对象,将这些对象分散到内存中,而最后我需要double []表示进一步的汇总......
是否可以选择生成将重复的原始值作为Java原始数组处理的类?
答案 0 :(得分:0)
正如所解释的here所需要的是存储未装箱值的ArrayList版本。由于java泛型仅适用于对象(盒装类型),因此每种基本类型都需要实现。所以你可以使用Apache Commons Primitives提供的那个。
答案 1 :(得分:0)
在几个地方讨论这个主题之后,答案是明确的否。
使用协议缓冲区,数字向量的二进制表示是有效的。但是目前Java实现无法有效地反序列化这些向量(而不是原始数组,而是获得盒装数字的集合......)