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

com.github.t3t5u.common.util.LruHashMap Maven / Gradle / Ivy

The newest version!
package com.github.t3t5u.common.util;

import java.util.LinkedHashMap;

@SuppressWarnings("serial")
public class LruHashMap extends LinkedHashMap {
	private static final int DEFAULT_INITIAL_CAPACITY = 16;
	private static final float DEFAULT_LOAD_FACTOR = 0.75f;
	private final int maximumCapacity;

	public LruHashMap(final int maximumCapacity) {
		super(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, true);
		if (maximumCapacity < DEFAULT_INITIAL_CAPACITY) {
			throw new IllegalArgumentException("maximum capacity must be greater than or equal to default initial capacity.");
		}
		this.maximumCapacity = maximumCapacity;
	}

	public LruHashMap(final int maximumCapacity, final int initialCapacity) {
		super(initialCapacity, DEFAULT_LOAD_FACTOR, true);
		if (maximumCapacity < initialCapacity) {
			throw new IllegalArgumentException("maximum capacity must be greater than or equal to initial capacity.");
		}
		this.maximumCapacity = maximumCapacity;
	}

	public LruHashMap(final int maximumCapacity, final int initialCapacity, final float loadFactor) {
		super(initialCapacity, loadFactor, true);
		if (maximumCapacity < initialCapacity) {
			throw new IllegalArgumentException("maximum capacity must be greater than or equal to initial capacity.");
		}
		this.maximumCapacity = maximumCapacity;
	}

	@Override
	protected boolean removeEldestEntry(final java.util.Map.Entry eldest) {
		return size() > maximumCapacity;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy