.Net 集合类
来源:互联网 发布:spss软件 编辑:程序博客网 时间:2024/05/21 14:36
.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)
{
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
ICloneable 成员#region ICloneable 成员
public object Clone()
{
SimpleSet ret = new SimpleSet(_EqualHandler);
foreach (object item in _Data)
{
ret.Add(item);
}
return ret;
}
#endregion
}
}
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)
{
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
ICloneable 成员#region ICloneable 成员
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
{
/**//// <summary>
/// IEqualHandler 的摘要说明。
/// </summary>
public interface IEqualHandler
{
bool Equal(object obj1, object obj2);
}
}
namespace CN.Teddy.Util.Collections
{
/**//// <summary>
/// IEqualHandler 的摘要说明。
/// </summary>
public interface IEqualHandler
{
bool Equal(object obj1, object obj2);
}
}
using System;
namespace CN.Teddy.Util.Collections
{
/**//// <summary>
/// EqualHandler 的摘要说明。
/// </summary>
public class EqualHandler : IEqualHandler
{
IEqualHandler 成员#region IEqualHandler 成员
public bool Equal(object obj1, object obj2)
{
// TODO: 添加 EqualHandler.Equal 实现
return obj1.Equals(obj2);
}
#endregion
}
}
namespace CN.Teddy.Util.Collections
{
/**//// <summary>
/// EqualHandler 的摘要说明。
/// </summary>
public class EqualHandler : IEqualHandler
{
IEqualHandler 成员#region IEqualHandler 成员
public bool Equal(object obj1, object obj2)
{
// TODO: 添加 EqualHandler.Equal 实现
return obj1.Equals(obj2);
}
#endregion
}
}
- .NET集合类
- .Net 集合类
- .Net中的集合类
- asp.net 集合类
- .NET集合类
- .net集合
- .NET的ConcurrentDictionary,线程安全集合类
- 认识.NET的集合
- asp.net 常见问题集合
- .net学习资源集合
- .net学习资料集合
- Net集合类型
- asp.net面试集合
- .Net问题集合
- 认识.NET的集合
- asp.net面试集合
- 认识.NET的集合
- asp.net面试集合
- 也谈orm和代码生成
- 基于Rss协议的组件式Web基础构架探讨(未完成0407)
- 写了一个客户端解析的Rss阅读器
- Can not connect to MySQL server 错误
- 发送邮件(到目前我用过最成功的发送邮件方式)
- .Net 集合类
- 基于Wiki的网络协作/知识积累试验平台概要设计(未完成v0.2.0204)
- 卡巴斯基2010 授权文件可以使用一年
- 51Job职位搜索助手(源码)
- 自制汉化工具 文件提取/导入/压缩工具
- 简单有效的防网络爬虫技巧?
- 基于Wiki的网络协作/知识积累试验平台
- 基于信用评价和知识共享为中心的网络协作模型设想(续1: 信用评价模块)
- 基于信用评价和知识共享为中心的网络协作模型设想