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
}
}
查看全文
相关阅读:
洛谷P3953 逛公园
洛谷P1247 取火柴游戏
洛谷P2024 食物链
洛谷P2680 运输计划
hdu 1495 非常可乐(bfs)
poj3984 迷宫问题(简单的输出路径的bfs)
Codeforces 729C Road to Cinema(二分)
Codeforces Technocup 2017
Codeforces Technocup 2017
poj 2251 Dungeon Master(bfs)
原文地址:https://www.cnblogs.com/teddyma/p/102357.html
最新文章
linux内存管理之全局框架
linux块设备模型架构框架
Linux中的工作队列
Linux设备模型 (1)
【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
【5】JAVA---地址App小软件(DeletePanel.class)(表现层)
【4】JAVA---地址App小软件(UpdatePanel.class)(表现层)
【3】JAVA---地址App小软件(AddPanel.class)(表现层)
【2】JAVA---地址App小软件(ListPanel.class)(表现层)
【1】JAVA---地址App小软件(AddressApp.class)(初步接触项目开发的分层思想)(表现层)
热门文章
HDOJ 1056 HangOver(水题)
HDOJ 1048 The Hardest Problem Ever(加密解密类)
HDOJ 1028 Ignatius and the Princess III(递推)
HDOJ 2114 Calculate S(n)(找周期)
codevs1260 快餐问题
NOIP2018普及组模拟赛
洛谷P2375 动物园
点分治
洛谷P1600 天天爱跑步
洛谷P1850 换教室
Copyright © 2011-2022 走看看