code: @Override
  	protected int pruneCache() {
  		int count = 0;
  		CacheObj<K, V> first = null;
  		
  		// 清理过期对象并找出链表头部元素（先入元素）
  		Iterator<CacheObj<K, V>> values = cacheMap.values().iterator();
  		while (values.hasNext()) {
  			CacheObj<K, V> co = values.next();
  			if (co.isExpired()) {
  				values.remove();
  				count++;
  			}
  			if (first == null) {
  				first = co;
  			}
  		}
  
  		// 清理结束后依旧是满的，则删除第一个被缓存的对象
  		if (isFull() && null != first) {
  			cacheMap.remove(first.key);
  			onRemove(first.key, first.obj);
  			count++;
  		}
  		return count;
  	}
docs: 先进先出的清理策略<br>
  先遍历缓存清理过期的缓存对象，如果清理后还是满的，则删除第一个缓存对象