我有一个LinkedHashMap,其中CommonEnum表示我想要跟踪的byte []类型。
LinkedHashMap<CommonEnum, byte[]> map = new LinkedHashMap<CommonEnum, byte[]>();
Java中最有效的方法是将其变为连续的
byte[]
具有相同的排序(这就是HashMap链接的原因)。
答案 0 :(得分:3)
如果你可以使用LinkedHashMap<CommonEnum, byte[]>
,它会变得更容易,我不知道为什么你会使用Byte[]
,所以我假设这一点。
我不确定效率最高的,但这两个是我的想法:
System.arraycopy
。Arrays.copyOf
来缩短它。顺便说一句,如果您的CommonEnum值始终具有相同的顺序(并且您可以将此顺序用作枚举定义中的顺序),则可以改为使用EnumMap
。
答案 1 :(得分:1)
我是ByteArrayOutputStream
的粉丝 - 您可以遍历地图中的条目,并为每个Byte[]
值迭代成员,write()
将它们转换为流。然后在最后调用toByteArray()
以获得平面版本。
答案 2 :(得分:0)
根据元素的数量和大小,最快的方法可能是首先计算总长度,创建新的字节数组,然后使用System.arraycopy
复制值。但是,使用ByteArrayOutputStream
也很好。