.Net 类库里没有集合类的吗? 自己写了个,大家提提意见~~ using System; using System.Collections; namespace CN.Teddy.Util.Collections { /// ISimpleSet 的摘要说明。 /// </summary> public interface ISimpleSet : ICollection, ICloneable { bool Contains(object obj); bool BelongTo(SimpleSet set2); void Add(object obj); void Remove(object obj); void Clear(); SimpleSet Intersect(SimpleSet set2); SimpleSet Union(SimpleSet set2); SimpleSet Minus(SimpleSet set2); } } using System; using System.Collections; namespace CN.Teddy.Util.Collections { /// SimpleSet 的摘要说明。 /// </summary> public class SimpleSet : ISimpleSet { private ArrayList _Data = null; private IEqualHandler _EqualHandler = null; private void InitPrivateMembers() { _Data = new ArrayList(); if (_EqualHandler == null) { _EqualHandler = new EqualHandler(); } } #endregion public object this[int index] { get { return _Data[index]; } } #endregion public SimpleSet() { InitPrivateMembers(); } public SimpleSet(IEqualHandler eh) { _EqualHandler = eh; InitPrivateMembers(); } #endregion public bool IsSynchronized { get { return _Data.IsSynchronized; } } public int Count { get { return _Data.Count; } } public void CopyTo(Array array, int index) { _Data.CopyTo(array, index); } public object SyncRoot { get { return _Data.SyncRoot; } } #endregion public IEnumerator GetEnumerator() { return _Data.GetEnumerator(); } #endregion public bool Contains(object obj) { foreach (object item in _Data) { if (_EqualHandler.Equal(item, obj)) { return true; } } return false; } public bool BelongTo(CN.Teddy.Util.Collections.SimpleSet set2) { bool ret = true; foreach (object item in _Data) { if (!set2.Contains(item)) { ret = false; break; } } return ret; } public void Add(object obj) { if (!this.Contains(obj)) { _Data.Add(obj); } } public void Remove(object obj) { foreach (object item in _Data) { if (_EqualHandler.Equal(obj, item)) { _Data.Remove(item); break; } } } public void Clear() { _Data.Clear(); } public CN.Teddy.Util.Collections.SimpleSet Intersect(CN.Teddy.Util.Collections.SimpleSet set2) { SimpleSet ret = new SimpleSet(_EqualHandler); foreach (object item in _Data) { if (set2.Contains(item)) { ret.Add(item); } } return ret; } public CN.Teddy.Util.Collections.SimpleSet Union(CN.Teddy.Util.Collections.SimpleSet set2) { SimpleSet ret = this.Clone() as SimpleSet; foreach (object item in set2) { ret.Add(item); } return ret; } public CN.Teddy.Util.Collections.SimpleSet Minus(CN.Teddy.Util.Collections.SimpleSet set2) { SimpleSet ret = this.Clone() as SimpleSet; foreach (object item in set2) { if (ret.Contains(item)) { ret.Remove(item); } } return ret; } #endregion public object Clone() { SimpleSet ret = new SimpleSet(_EqualHandler); foreach (object item in _Data) { ret.Add(item); } return ret; } #endregion } } using System; namespace CN.Teddy.Util.Collections { /// IEqualHandler 的摘要说明。 /// </summary> public interface IEqualHandler { bool Equal(object obj1, object obj2); } } using System; namespace CN.Teddy.Util.Collections { /// EqualHandler 的摘要说明。 /// </summary> public class EqualHandler : IEqualHandler { public bool Equal(object obj1, object obj2) { // TODO: 添加 EqualHandler.Equal 实现 return obj1.Equals(obj2); } #endregion } } 相关文章: 2021-09-04 2021-08-17 2021-08-01 2022-01-12 2021-12-24 2021-07-13