zoukankan
html css js c++ java
.Net 集合类
.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;
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);
}
}
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
}
}
查看全文
相关阅读:
JS学习之构造函数、原型、原型链
JS学习之面向对象(面向对象的创建方法,new运算符的工作原理)
JS学习之事件流
JS学习之生命周期与垃圾回收机制
关于在XP操作系统和IIS5.1环境下的MVC环境搭建之IIS错误
VS2010、.net 4.0下MVC3开发中Code First开发模式的数据迁移小结
关于MVC3框架下的Jquery异步请求函数的学习心得之一——$.post()
关于ASP调用存储过程的经典资料转载
关于windows环境下的IIS 500内部服务器错误的一种解决办法
接VS2010+Net+MVC3+EF4.1环境下的Code First一文的补充说明
原文地址:https://www.cnblogs.com/teddyma/p/102357.html
最新文章
分支合并主分支
索引越界
python常见概念
python练手习题
flask-login原理详解
git常用操作
git
自执行函数
json字符串对象的相互转换
jQuery
热门文章
相对路径问题
js创建对象的三种方式
常用正则表达式大全!(例如:匹配中文、匹配html)
js数据类型
CSS盒模型之文档流与BFC
css盒模型相关知识一
vue创立项目脚手架并且与git仓库关联起来
JS学习之赋值与赋引用
JS学习之call与apply
JS学习之包装对象、hasOwnProperty、constructor
Copyright © 2011-2022 走看看