All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.azure.cosmos.implementation.caches.SizeLimitingLRUCache Maven / Gradle / Ivy

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.cosmos.implementation.caches;

import com.azure.cosmos.implementation.query.PartitionedQueryExecutionInfo;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * LRU Cache using LinkedHashMap that limits the number of entries
 */
public class SizeLimitingLRUCache extends LinkedHashMap {

    private static final long serialVersionUID = 1L;
    private final int maxEntries;

    public SizeLimitingLRUCache(int maxEntries) {
        this.maxEntries = maxEntries;
    }

    public SizeLimitingLRUCache(int initialCapacity, float loadFactor, int maxEntries) {
        super(initialCapacity, loadFactor);
        this.maxEntries = maxEntries;
    }

    public SizeLimitingLRUCache(
        Map m, int maxEntries) {
        super(m);
        this.maxEntries = maxEntries;
    }

    public SizeLimitingLRUCache(int initialCapacity, float loadFactor, boolean accessOrder, int maxEntries) {
        super(initialCapacity, loadFactor, accessOrder);
        this.maxEntries = maxEntries;
    }

    public SizeLimitingLRUCache(int initialCapacity, int maxEntries) {
        super(initialCapacity);
        this.maxEntries = maxEntries;
    }

    @Override
    protected boolean removeEldestEntry(
        Map.Entry eldest) {
        return size() > maxEntries;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy