Какую реализацию карты лучше всего использовать при хранении целых чисел с помощью символов char? - PullRequest
0 голосов
/ 22 июля 2009

У меня есть набор флагов, которые являются частью огромного текстового файла данных в виде отдельных символов. Перед обработкой файла я сопоставляю каждый флаг с идентификатором свойства, которое оно представляет. Во время обработки файла мне нужно как можно быстрее найти эти отображения (я это часто делаю).

В настоящее время я храню их в HashMap. И код выглядит так:

    private HashMap<Integer, Integer> _propertyKeys;

    private int _getKeyedProperty(char key) {
      return (_propertyKeys.get((int) key));
    }

Можно ли как-нибудь сделать это быстрее, используя лучшую реализацию Map, чем HashMap, или даже используя массивы для предотвращения упаковки / распаковки?

Ответы [ 2 ]

2 голосов
/ 22 июля 2009

Вы можете использовать TIntIntHashMap из GNU Trove. Он использует примитивы для ключей и значений.

Я использовал классы списков примитивов GNU Trove и обнаружил, что они дают заметное улучшение производительности по сравнению со стандартными списками классов, использующими автобокс для примитивов.

0 голосов
/ 22 июля 2009

Если вы знаете полный набор флагов, которые будут использоваться, вы можете создать из них Enum и использовать java.util.EnumMap.

...