Распаковка происходит быстро - выделения не требуются. Бокс потенциально медленнее, так как ему нужно выделить новый объект (если он не использует объединенный объект).
Вы уверены, что у вас действительно есть проблема? Не усложняйте ваш код, пока вы не докажете, что это значительный удар. Я очень сомневаюсь, что это так.
Существуют библиотеки коллекций, доступные для примитивных типов, но я бы придерживался обычного HashMap из JRE, пока вы не профилируете и не проверите, что это вызывает проблему. Если это действительно только тысячи поисков, я очень сомневаюсь, что это вообще будет проблемой. Точно так же, если вы основаны на поиске, а не на сложении (то есть, вы выбираете чаще, чем добавляете), тогда стоимость бокса не будет особенно значительной, просто распаковка, что дешево.
Я бы предложил использовать intValue()
вместо приведения для преобразования значения в int
, хотя - это делает более понятным (IMO), что происходит.
РЕДАКТИРОВАТЬ: Чтобы ответить на вопрос в комментарии, HashMap.get(key)
будет быстрее, чем ArrayList.indexOf(key)
, когда коллекция достаточно большая . Если у вас есть только пять предметов, список может быть быстрее. Я полагаю, что это не совсем так.
Если вы действительно, действительно не хотите бокс / распаковку, попробуйте Trove (TObjectHashMap). Также нужно рассмотреть COLT , но я не смог найти там нужного типа.