我有一個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