MyBatis LRU 算法实现

  public void setSize(final int size) {
    // TODO look for a better solution to this, see issue #335
    keyMap = Collections.synchronizedMap(new LinkedHashMap<Object, Object>(size, .75F, true) {
      private static final long serialVersionUID = 4267176411845948333L;


//LinkedHashMap有一个removeEldestEntry(Map.Entry eldest)方法,通过覆盖这个方法,加入一定的条件,满足条件返回true。当put进新的值方法返回true时,便移除该map中最老的键和值。

      protected boolean removeEldestEntry(Map.Entry<Object, Object> eldest) {
        boolean tooBig = size() > size;
        if (tooBig) {
          eldestKey = eldest.getKey();
        }
        return tooBig;
      }
    });
  }

小结;

linkedHashMap  保证插入元素顺序

removeEldestEntry 返回结果为true时 则删除最老元素

猜你喜欢

转载自blog.csdn.net/qq_29857681/article/details/80767743