какие коллекции java (и карты) можно отсортировать по последнему доступу - PullRequest
4 голосов
/ 29 сентября 2010

Я знаю, что LinkedHashMap предоставляет конструктор, где вы можете указать, должна ли карта быть отсортирована по порядку доступа, таким образом, эффективно обеспечивая реализацию LRU.Можете ли вы сказать мне, какие (и если) другие Коллекции и Карты из большого зоопарка Коллекций предоставляют эту функцию?

Ответы [ 2 ]

4 голосов
/ 29 сентября 2010

Не думаю, что я полностью понимаю вопрос, но, возможно, вы захотите взглянуть на реализацию LRUMap платформы Commons Collections .

1 голос
/ 29 сентября 2010

Я не думаю, что такие Коллекции или Карты существуют (но я также впервые услышал об этом конструкторе).Я проверил Гуава , но я не думаю, что у них тоже есть решение.

Но я думаю, что это может быть легко достигнуто с помощью шаблона декоратора.Напишите объект делегата, который реализует нужный вам интерфейс и делегирует все методы внутреннему объекту.Ваша оболочка также содержит LinkedHashSet / LinkedHashMap (в зависимости от того, имеете ли вы дело с коллекцией или картой), которая регистрирует доступ к данным.

Теперь ваши методы iterator () / entrySet () предоставляют представление, которое сначала поддерживаетсяLinkedHashSet / Map, а затем по остальным данным (или наоборот, если вы хотите изменить порядок доступа).

Я бы реализовал его, используя методы-оболочки, подобные тем, которые используются в классе Collections.

Например,

Map<String,String> map = CollectionUtils.viewMapByAccessOrder(
                             new HashMap<String,String>());
List<String> list = CollectionUtils.viewListByAccessOrder(
                             new ArrayList<String>());

Это может быть функциональность, которая имеет смысл для более широкой аудитории.Я хотел бы рассмотреть возможность запроса функции в проекте Guava .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...