public bool Contains(T value) { var valueHash = new ValueHash <T>(value); var index = GetIndex(valueHash); return(_arr[index] != null && CheckList(_arr[index], valueHash)); }
private bool CheckList(List <ValueHash <T> > list, ValueHash <T> valueHash) { if (list.Count == 0) { return(false); } return(list.Any(a => a.Hashcode == valueHash.Hashcode)); }
public bool Remove(T value) { var valueHash = new ValueHash <T>(value); var index = GetIndex(valueHash); if (_arr[index] == null || !CheckList(_arr[index], valueHash)) { return(false); } _arr[index].Remove(valueHash); Count--; return(true); }
private bool AddValueHash(ValueHash <T> valueHash) { var index = GetIndex(valueHash); if (_arr[index] == null) { _arr[index] = new List <ValueHash <T> >(); } if (CheckList(_arr[index], valueHash)) { return(false); } _arr[index].Add(valueHash); return(true); }
private int GetIndex(ValueHash <T> value) { return(value.Hashcode % _arr.Length); }