Что лучше между использованием длинного строкового ключа или короткого строкового ключа в HashMap? - PullRequest
0 голосов
/ 27 октября 2011

Что лучше между использованием длинного строкового ключа или короткого строкового ключа в HashMap?

Пример:

1.Ключ длинной строки в HashMap

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("[ART.117.4002] ADAPTER RUNTIME (ADAPTER SERVICE): UNABLE TO INVOKE ADAPTER SERVICE", "Cannot invoke adapter service");

Примечание: длина длинной строки будет ограничена максимум 120 символами, и все будут в верхнем регистре.Если длина больше макс.символы будут усечены.

2.Короткий строковый ключ в HashMap

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("B8B77715", "Cannot invoke adapter service");

Примечание: B8B77715 - это CRC32 из "[ART.117.4002] ADAPTER RUNTIME (ADAPTER SERVICE): НЕВОЗМОЖНО ПРИЗНАТЬ СЕРВИС АДАПТЕРА".

Допустимв HashMap будет более 4000 записей.Что лучше между двумя с точки зрения производительности?

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

CRC32 - это грубая аппроксимация вашего исходного значения, но для двух разных исходных значений будет возможно получить одно и то же значение CRC32.Это делает их очень плохим кандидатом на ключ к HashMap, и тот факт, что это снижает целостность данных, должен превзойти любые потенциальные проблемы производительности.Определенно используйте [ART.117.4002] ... - зачем вводить потенциальную (если редко) ошибку, когда вам это не нужно?

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

0 голосов
/ 27 октября 2011

Трудно представить, что это может иметь значение. Используйте все, что имеет смысл.

...