Set类
Set可以容纳相同类型的任意数据的值,其特点就是所有保存于Set的值都是排序并且唯一的,当插入重复的值时,
Set会自动忽略。比如字符串类型,不区分大小写。
Set还可以用作集合的并集(Union)、交集(Intersection)和差集(Defference)运算。
Union:A集合元素与B集合元素,合并。
Intersection:A集合与B集合都存在的元素,交集。
Defference:A集合与B集合不相同的元素,以后者为主,取前者。
static
void SetJob(Args _args)
{
Set m_SetStr = new Set(Types::String);
Set m_SetA = new Set(Types::Integer);
Set m_SetB = new Set(Types::Integer);
SetEnumerator m_SetEtor;
;
m_SetStr.add( " Andy ");
m_SetStr.add( " Judy ");
m_SetStr.add( " Luck ");
m_SetStr.add( " ANDY ");
info(strfmt( " %1 ",m_SetStr. in( " Andy "))); // true
info(m_SetStr.toString());
info(strfmt( " count:%1 ",m_SetStr.elements())); // 3
m_SetEtor = m_SetStr.getEnumerator();
while(m_SetEtor.moveNext())
{
info(m_SetEtor.current());
}
m_SetStr.remove( " Luck ");
info( " ============ ");
m_SetA.add( 1);
m_SetA.add( 2);
m_SetA.add( 3);
m_SetB.add( 3);
m_SetB.add( 4);
m_SetB.add( 5);
info( set::union(m_SetA,m_SetB).toString()); // 1,2,3,4,5
info( set::intersection(m_SetA,m_SetB).toString()); // 3
info( set::difference(m_SetA,m_SetB).toString()); // 1,2
}
{
Set m_SetStr = new Set(Types::String);
Set m_SetA = new Set(Types::Integer);
Set m_SetB = new Set(Types::Integer);
SetEnumerator m_SetEtor;
;
m_SetStr.add( " Andy ");
m_SetStr.add( " Judy ");
m_SetStr.add( " Luck ");
m_SetStr.add( " ANDY ");
info(strfmt( " %1 ",m_SetStr. in( " Andy "))); // true
info(m_SetStr.toString());
info(strfmt( " count:%1 ",m_SetStr.elements())); // 3
m_SetEtor = m_SetStr.getEnumerator();
while(m_SetEtor.moveNext())
{
info(m_SetEtor.current());
}
m_SetStr.remove( " Luck ");
info( " ============ ");
m_SetA.add( 1);
m_SetA.add( 2);
m_SetA.add( 3);
m_SetB.add( 3);
m_SetB.add( 4);
m_SetB.add( 5);
info( set::union(m_SetA,m_SetB).toString()); // 1,2,3,4,5
info( set::intersection(m_SetA,m_SetB).toString()); // 3
info( set::difference(m_SetA,m_SetB).toString()); // 1,2
}