All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ctc.wstx.util.SimpleCache Maven / Gradle / Ivy

The newest version!
package com.ctc.wstx.util;

import java.util.*;

/**
 * Simple Map implementation usable for caches where contents do not
 * expire, but where size needs to remain bounded.
 *

* Note: we probably should use weak references, or something similar * to limit maximum memory usage. This could be implemented in many * ways, perhaps by using two areas: first, smaller one, with strong * refs, and secondary bigger one that uses soft references. */ public final class SimpleCache { final LimitMap mItems; final int mMaxSize; public SimpleCache(int maxSize) { mItems = new LimitMap(maxSize); mMaxSize = maxSize; } public V find(K key) { return mItems.get(key); } public void add(K key, V value) { mItems.put(key, value); } /* ///////////////////////////////////////////// // Helper classes ///////////////////////////////////////////// */ @SuppressWarnings("serial") final static class LimitMap extends LinkedHashMap { final int mMaxSize; public LimitMap(int size) { super(size, 0.8f, true); // Let's not allow silly low values... mMaxSize = size; } @Override public boolean removeEldestEntry(Map.Entry eldest) { return (size() >= mMaxSize); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy