java限制map大小,并FIFO淘汰

时间:2022-10-28 21:23:05

有时候需要往一个MAP中写入一些记录,但又怕无限制地写入会导致内存爆掉,所以得限制这个MAP的大小。

实现:LinkedHashMap提供了简单的方法。

首先,定义一个最大数,比如1000,然后new LinkedHashMap的时候,重写一下removeEldestEntry()方法:

int maximumSize = 1000;
LinkedHashMap<K, String> myMap= new LinkedHashMap<K, String>() {
private static final long serialVersionUID = 1L;
@Override
protected boolean removeEldestEntry(Map.Entry<K, String> eldest) {
return size() > maximumSize;
}
};

这样,每当调用myMap.put()的时候,就会自动判断是否个数已经超过maximumSize,如果超过就删掉最旧的那条(相当于是FIFO算法)。