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

fi.evolver.utils.collection.BoundedLinkedHashMap Maven / Gradle / Ivy

There is a newer version: 3.5.0
Show newest version
package fi.evolver.utils.collection;

import java.util.LinkedHashMap;

public class BoundedLinkedHashMap extends LinkedHashMap {
	private static final long serialVersionUID = 1L;

	public enum Order { ACCESS, INSERT }


	private int maxSize;


	/**
	 * Creates a linked hash map which removes the least recently inserted entries when max size is exceeded.
	 *
	 * @param maxSize Maximum allowed size for the map.
	 */
	public BoundedLinkedHashMap(int maxSize) {
		this(maxSize, Order.INSERT);
	}

	/**
	 * Creates a linked hash map which removes old entries when max size is exceeded.
	 * The given order affects both iteration order and removal order.
	 *
	 * @param maxSize Maximum allowed size for the map.
	 * @param order Iteration & removal order.
	 */
	public BoundedLinkedHashMap(int maxSize, Order order) {
		super(16, 0.75f, order == Order.ACCESS);
		if (maxSize < 1)
			throw new IllegalArgumentException("maxSize must be at least 1");
		this.maxSize = maxSize;
	}


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


	@Override
	public int hashCode() {
		return System.identityHashCode(this);
	}

	@Override
	public boolean equals(Object obj) {
		return this == obj;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy