我有一个LinkedHashMap,其中CommonEnum代表我想跟踪的一个byte []类型。Flatten Ragged LinkedHashMap
LinkedHashMap<CommonEnum, byte[]> map = new LinkedHashMap<CommonEnum, byte[]>();
什么是Java中最有效的方式压扁成连续
byte[]
具有相同的排序(这就是为什么HashMap的链接)这一点。
我有一个LinkedHashMap,其中CommonEnum代表我想跟踪的一个byte []类型。Flatten Ragged LinkedHashMap
LinkedHashMap<CommonEnum, byte[]> map = new LinkedHashMap<CommonEnum, byte[]>();
什么是Java中最有效的方式压扁成连续
byte[]
具有相同的排序(这就是为什么HashMap的链接)这一点。
如果您可以使用LinkedHashMap<CommonEnum, byte[]>
,它变得更容易,我不知道为什么你会使用Byte[]
,所以我假设这一点。
我不知道最有效,但是这两个是什么,我想:
System.arraycopy
。Arrays.copyOf
来缩短它。顺便说一句,如果你的CommonEnum值总是相同的顺序(并且你可以使用这个命令作为枚举定义的顺序),你可以使用一个EnumMap
代替。
绝对是这样做的方式(+1)。我想不是每个人都意识到一个字节[]是一个对象,这可能是一个解释... – 2011-03-22 13:02:33
我的ByteArrayOutputStream
风扇 - 你可以通过地图中的条目进行迭代,并为每个Byte[]
值,通过迭代的成员,荷兰国际集团write()
他们到流。然后在最后打电话toByteArray()
以获得平面版本。
根据元素数量和大小,最快的方法可能是首先计算总长度,创建一个新的字节数组,然后使用System.arraycopy
复制值。但是,使用ByteArrayOutputStream
也不错。
为什么你有'Byte []'而不是'byte []'? – 2011-03-22 12:48:44
啊..我不认为你可以使用byte []与泛型..我的错误 – systemoutprintln 2011-03-22 13:04:05
你不能使用基元类型作为类型参数,但数组类型是Java中的引用类型(甚至是基元数组)。 – 2011-03-22 13:36:27