.Net 类库里没有集合类的吗?
自己写了个,大家提提意见~~
using System;
using System.Collections;
namespace CN.Teddy.Util.Collections
{
/**//// <summary>
/// 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.Collections;
namespace CN.Teddy.Util.Collections
{
/**//// <summary>
/// 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
{
/**//// <summary>
/// SimpleSet 的摘要说明。
/// </summary>
public class SimpleSet : ISimpleSet
{
Private members#region Private members
private ArrayList _Data = null;
private IEqualHandler _EqualHandler = null;
private void InitPrivateMembers()
{
_Data = new ArrayList();
if (_EqualHandler == null)
{
_EqualHandler = new EqualHandler();
}
}
#endregion
Public Members#region Public Members
public object this[int index]
{
get
{
return _Data[index];
}
}
#endregion
Constructors#region Constructors
public SimpleSet()
{
InitPrivateMembers();
}
public SimpleSet(IEqualHandler eh)
{
_EqualHandler = eh;
InitPrivateMembers();
}
#endregion
ICollection 成员#region ICollection 成员
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
IEnumerable 成员#region IEnumerable 成员
public IEnumerator GetEnumerator()
{
return _Data.GetEnumerator();
}
#endregion
ISimpleSet 成员#region ISimpleSet 成员
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)
{
using System.Collections;
namespace CN.Teddy.Util.Collections
{
/**//// <summary>
/// SimpleSet 的摘要说明。
/// </summary>
public class SimpleSet : ISimpleSet
{
Private members#region Private members
private ArrayList _Data = null;
private IEqualHandler _EqualHandler = null;
private void InitPrivateMembers()
{
_Data = new ArrayList();
if (_EqualHandler == null)
{
_EqualHandler = new EqualHandler();
}
}
#endregion
Public Members#region Public Members
public object this[int index]
{
get
{
return _Data[index];
}
}
#endregion
Constructors#region Constructors
public SimpleSet()
{
InitPrivateMembers();
}
public SimpleSet(IEqualHandler eh)
{
_EqualHandler = eh;
InitPrivateMembers();
}
#endregion
ICollection 成员#region ICollection 成员
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
IEnumerable 成员#region IEnumerable 成员
public IEnumerator GetEnumerator()
{
return _Data.GetEnumerator();
}
#endregion
ISimpleSet 成员#region ISimpleSet 成员
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)
{