Нужна оптимизированная карта (k,v), например (long, long[]), чтобы избежать автоматического бокса.
У меня есть фрагмент кода, который в основном выглядит следующим образом:
long[] ids;
long[][] values;
Значения заполняются вне очереди, т.е.
if ids = ['id1','id2',...]
ценности могут быть
values = [['id2val1','id2val2',..]['id1val1','id2val2',...],..]
Невозможно избежать внеочередного выполнения, подход, который я рассматриваю, заключается в использовании карты
Map<Long,Long[]>
,
но из-за автоматической упаковки java невозможно использовать дженерики JAVA.
Я хотел бы знать, можно ли это сделать с помощью некоторой оптимизированной библиотеки структуры данных, которая использует примитивы,
чтобы избежать ненужного автоматического бокса, я смотрю на библиотеки, такие как
Koloboke
&
Fastutil
.
Ищете рекомендацию по структуре данных
1 ответ
Хотя вам нужно использовать коробку
Long
в качестве ключа карты вам не нужно помещать примитивы в массивы значений. Вы можете использовать
Map<Long,long[]>
скорее, чем
Map<Long,Long[]>
. Это должно облегчить большинство ваших проблем с производительностью.
Итак, прежде чем вы начнете внедрять сторонние библиотеки, посмотрите, просты ли
HashMap<Long,long[]>
будет достаточно для ваших целей.