LinkedHashMap
включает в свою реализацию конструктор без аргументов, который действует как поставщик для операции toMap
collect . Вы можете ввести то же самое, включив:
public LRUCache() {
this(10); // default size
}
После этого вы можете собрать реализацию LRUCache
, используя переопределение toMap
с поставщиком LRUCache::new
, следующим образом:
public LRUCache<K, V> collect() {
return entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue,
(a, b) -> a, LRUCache::new));
}
Примечание: - То, что имеет значение, - это предоставление поставщику данных для реализации, отличной от HashMap
, то есть то, что вы получаете, используя другую перегруженную реализацию toMap
.