1. public class RaptorHash<T>
  2. {
  3. private LinkedList<int> Keys;
  4. private Hashtable Values;
  5. private int Max;
  6. public RaptorHash(int max)
  7. {
  8. Max = max;
  9. Keys = new LinkedList<int>();
  10. Values = new Hashtable();
  11. }
  12. public void Add(int key, T o)
  13. {
  14. if (Keys.Contains(key))
  15. Keys.Remove(key);
  16.  
  17. Keys.AddFirst(key);
  18. Values.Add(key, o);
  19.  
  20. if (Keys.Count > Max)
  21. {
  22. Values.Remove(Keys.Last);
  23. Keys.Remove(Keys.Last);
  24. }
  25. }
  26. public T Get(int key)
  27. {
  28. if (Keys.Contains(key))
  29. {
  30. Keys.Remove(key);
  31. Keys.AddFirst(key);
  32. return (T)Values[key];
  33. }
  34. return default(T);
  35. }
  36. public T GetFirst()
  37. {
  38.  
  39. return (T)Values[Keys.First.Value];
  40. }
  41. }