Parker's DevEd Blog

Musings on all software development technologies, and education involving computer science and fraud investigation

Final RollingList<T>

public class RollingList<T> : ICollection<T> {
   
#region Private Fields
   
private int _capacity;
    private LinkedList<T> _linkedList;
    #endregion

    #region Constructors
    public RollingList(int capacity) {
        _capacity = capacity;
        _linkedList =
new LinkedList<T>();
    }
    #endregion

   
#region Public Methods
   
public override string ToString() {
       
StringBuilder sb = new StringBuilder();
       
foreach(T item in this) {
            sb.AppendLine(item.ToString());
        }
       
return sb.ToString();
    }
   
#endregion

    #region ICollection<T> Members
   
public void Add(T item) {
        _linkedList.AddFirst(
new LinkedListNode<T>(item));
       
if(_linkedList.Count > _capacity)
            _linkedList.RemoveLast();
    }
   
public void Clear() {
        _linkedList.Clear();
    }
   
public bool Contains(T item) {
       
return _linkedList.Contains(item);
    }
   
public void CopyTo(T[] array, int arrayIndex) {
        _linkedList.CopyTo(array, arrayIndex);
    }
   
public int Count {
       
get { return _linkedList.Count; }
    }
   
public bool IsReadOnly {
       
get { throw new Exception("The method or operation is not implemented."); }
    }
   
public bool Remove(T item) {
       
return _linkedList.Remove(item);
    }
   
#endregion

    #region IEnumerable<T> Members
   
public IEnumerator<T> GetEnumerator() {
       
return _linkedList.GetEnumerator();
    }
   
#endregion

    #region IEnumerable Members
   
IEnumerator IEnumerable.GetEnumerator() {
       
return _linkedList.GetEnumerator();
    }
   
#endregion
}

Comments

No Comments