Если вы можете использовать LinkedHashMap<CommonEnum, byte[]>
, это станет проще, и я понятия не имею, почему вы бы использовали Byte[]
, поэтому я предполагаю это.
Я не уверен насчет самого эффективного , но вот о двух я думаю:
- создать байт [] достаточно большой (либо оценить его, либо рассчитать, добавив размеры)
- перебирает значения, используя
System.arraycopy
для каждого.
- Если массив был длинным, используйте
Arrays.copyOf
, чтобы сократить его.
- Создать ByteArrayOutputStream
- цикл по значениям, запись каждого байта [] в поток.
- получить массив.
Кстати, если значения CommonEnum всегда имеют одинаковый порядок (и вы можете использовать этот порядок в качестве порядка в определении перечисления), вы можете использовать EnumMap
вместо этого.