java 集合内存溢出_java - 带有过期条目的Java集合 - 堆栈内存溢出

你可以装饰一个集合实现来做到这一点。 像这样的东西:

public class ExpirableArrayList extends ArrayList {

private final Date creation = new Date();

private final long timeToLiveInMs;

public ExpirableArrayList(long timeToLiveInMs, int initialCapacity) {

super(initialCapacity);

this.timeToLiveInMs = timeToLiveInMs;

}

public ExpirableArrayList(long timeToLiveInMs) {

this.timeToLiveInMs = timeToLiveInMs;

}

public ExpirableArrayList(long timeToLiveInMs, Collection extends E> c) {

super(c);

this.timeToLiveInMs = timeToLiveInMs;

}

private void expire() {

if (System.currentTimeMillis() - creation.getTime() > timeToLiveInMs) {

clear();

}

}

@Override

public int size() {

expire();

return super.size();

}

@Override

public boolean isEmpty() {

expire();

return super.isEmpty();

}

@Override

public boolean contains(Object o) {

expire();

return super.contains(o);

}

@Override

public Iterator iterator() {

expire();

return super.iterator();

}

@Override

public Object[] toArray() {

expire();

return super.toArray();

}

@Override

public T[] toArray(T[] a) {

expire();

return super.toArray(a);

}

@Override

public boolean add(E e) {

expire();

return super.add(e);

}

@Override

public boolean remove(Object o) {

expire();

return super.remove(o);

}

@Override

public boolean containsAll(Collection> c) {

expire();

return super.contains(c);

}

@Override

public boolean addAll(Collection extends E> c) {

expire();

return super.addAll(c);

}

@Override

public boolean addAll(int index, Collection extends E> c) {

expire();

return super.addAll(index, c);

}

@Override

public boolean removeAll(Collection> c) {

expire();

return super.removeAll(c);

}

@Override

public boolean retainAll(Collection> c) {

expire();

return super.retainAll(c);

}

@Override

public E get(int index) {

expire();

return super.get(index);

}

@Override

public E set(int index, E element) {

expire();

return super.set(index, element);

}

@Override

public E remove(int index) {

expire();

return super.remove(index);

}

@Override

public int indexOf(Object o) {

expire();

return indexOf(o);

}

@Override

public int lastIndexOf(Object o) {

expire();

return lastIndexOf(o);

}

@Override

public ListIterator listIterator() {

expire();

return listIterator();

}

@Override

public ListIterator listIterator(int index) {

expire();

return listIterator();

}

@Override

public List subList(int fromIndex, int toIndex) {

expire();

return subList(fromIndex, toIndex);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值