Нужна оптимизированная карта (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[]> будет достаточно для ваших целей.

Другие вопросы по тегам