Как лучше всего реализовать кеш для наборов? В частности, что лучше всего подходит для кеша?
В статический фабричный метод я хочу включить механизм кэширования, чтобы можно было повторно использовать существующие (неизменяемые) объекты. Такое повторное использование не должно приводить к значительному снижению производительности. Критические данные этого класса — это параметризованный LinkedHashSet. Мне интересно, разумно ли использовать хэш-код этого набора в качестве ключа для кеша (HashMap), потому что в документации по java говорится: «Хэш-код набора определяется как сумма хэш-кодов элементы множества». Разве это не потенциально медленный процесс? Когда он рассчитывается? Как только Set генерируется или по запросу? Не может ли это на самом деле съесть много прироста производительности, который я ожидаю получить за счет кэширования?
Кроме того, hashCode — это int, но HashMaps не принимает примитивы, так что это требует упаковки в Integer, верно?
Мой текущий подход состоял бы в том, чтобы поддерживать дополнительный набор длин наборов существующих объектов. Фабричный метод сначала проверяет, указана ли длина текущего набора, и только затем ищет в фактическом индексе. Но это касается и бокса...
Есть ли лучшее решение?