
fi.evolver.utils.collection.BoundedLinkedHashMap Maven / Gradle / Ivy
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