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
}
}
查看全文
相关阅读:
POJ3977 Subset 折半枚举
Ubuntu和Win7双系统,ubuntu被删,重新启动之后显示,no such partition
hdu 4296 贪心
Python标准库:内置函数tuple([iterable])
【python自制】让大白成为你的个人助手!
Flex设置LinkButton的背景色
VB6基本数据库应用(五):数据的查找与筛选
正态分布(normal distribution)与偏态分布(skewed distribution)
windows 系统文件 —— 特殊文件及文件类型
windows 系统文件 —— 特殊文件及文件类型
原文地址:https://www.cnblogs.com/teddyma/p/102357.html
最新文章
Cocos2d-X中间应用
js在方法Ajax请求数据来推断,验证无效(OnClientClick="return Method();"),或者直接运行的代码隐藏
Cocos2d:使用 CCCamera 做滚动效果 (Four Ways of Scrolling with Cocos2D)
Decorator模式设计模式
在空白处填充程序3
ProgressDialog(三)——代号为中心的屏幕上显示ProgressDialog(ProgressBar)
Logrotate
使用rsyslog+loganalzey收集日志显示客户端ip
Android学习 RadioButton
Es
热门文章
Maven Source jar
Grok debugger
Percona
日志收集思考
Kerbose
Mybatis bug修正
linux内核CFS进程调度策略
Nginx系列(五)--nginx+tomcat实现负载均衡
Codeforces 479B. Towers 暴力
Installation error: INSTALL_FAILED_VERSION_DOWNGRADE Android
Copyright © 2011-2022 走看看