记录下来方便看
1.
哈希表(HashTable)又叫做散列表,根据关键码值(即键值对)而直接访问的数据结构。
public void Add(Object item) { if (!data.ContainsValue(item)) data.Add(Hash(item), item); }
private string Hash(Object item) { char[] chars; string s = item.ToString(); int hashValue = 0; chars = s.ToCharArray(); for (int i = 0; i <= chars.GetUpperBound(0); i++) hashValue += (int)chars[i]; return hashValue.ToString(); }
//这是移除的方法 public void Remove(Object item) { data.Remove(Hash(item)); } //确定数量多少的方法 public int Size() { return data.Count; }
public CSet Union(CSet aSet) { CSet tempSet = new CSet(); foreach (Object hashObject in data.Keys) tempSet.Add(this.data[hashObject]); foreach (Object hashObject in aSet.data.Keys) if (!(this.data.ContainsKey(hashObject))) tempSet.Add(aSet.data[hashObject]); return tempSet; }
5. Intersection 方法
public CSet Intersection(CSet aSet) { CSet tempSet = new CSet(); foreach (Object hashObject in data.Keys) if (aSet.data.Contains(hashObject)) tempSet.Add(aSet.data[hashObject]); tempSet.Add(aSet.GetValue(hashObject)) return tempSet; }
6. Subset 方法
public bool Subset(CSet aSet) { if (this.Size() > aSet.Size()) return false; else foreach (Object key in this.data.Keys) if (!(aSet.data.Contains(key))) return false; return true; }
public CSet Difference(CSet aSet) { CSet tempSet = new CSet(); foreach (Object hashObject in data.Keys) if (!(aSet.data.Contains(hashObject))) tempSet.Add(data[hashObject]); return tempSet; } public override string ToString() { string s = “”; foreach (Object key in data.Keys) s += data[key] + " "; return s; }
写到纸上太慢了,博客好用还省时间,还方便自己看,比较好用
原文:https://www.cnblogs.com/qq2351194611/p/12048883.html