/*
* Copyright (C) 2013 Omry Yadan <omry@yadan.net>
* All rights reserved.
*
* See https://github.com/omry/banana/blob/master/BSD-LICENSE for licensing information
*/
package net.yadan.banana.utils;
import net.yadan.banana.utils.LRU.Callback;
import net.yadan.banana.utils.LRU.DataType;
public class LRUExample {
public static void main(String[] args) {
int maxCapacity = 5;
LRU lru = new LRU(maxCapacity, DataType.OBJECT);
// adding 10 items to an LRU with size 5 with leave the last 5 items in
for (int i = 0; i < 10; i++) {
long key = i;
lru.add(key, "Hello " + i);
}
System.out.println(lru.exists(4)); // false, 4 was evicted
System.out.println(lru.get(5)); // Hello 5
// callback for evicted items
for (int i = 11; i < 15; i++) {
long key = i;
lru.add(key, "Hello " + i, new Callback() {
@Override
public void keyEvicted(long key, Object data) {
System.out.println("Evicted " + data);
}
});
}
LRU primitiveLRU = new LRU(maxCapacity, DataType.LONG);
// adding 10 items to an LRU with size 5 with leave the last 10 items i
for (int i = 0; i < 10; i++) {
long key = i;
// no Boxing/Unboxing or memory allocation, pure primitive operation
// function signature : void addLong(long id, long data)
primitiveLRU.addLong(key, 100 + i);
}
}
}