当集合类仅仅存放不定数量字符类型的对象时,System.Collections.ArrayList和System.Collections.Specialized.StringCollection的区别?
今天早上突然想起StringCollection,它表示字符串集合
当我们仅仅存放不定数量字符类型的对象时,是不是StringCollection的使用效率比ArrayList高?
先写了一个控制台程序
using System;
using System.Collections;
using System.Collections.Specialized;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
string tem;
ArrayList a=new ArrayList();
StringCollection s=new StringCollection();
for(int i=1;i<3000000;i++)
{
string str=i.ToString();
a.Add(str);
s.Add(str);
}
//返回可循环访问 StringCollection 的 StringEnumerator
StringEnumerator se=s.GetEnumerator();
//显式接口实现,返回 IEnumerator,它可以循环访问 StringCollection。
IEnumerator ies=((IEnumerable)s).GetEnumerator();
//返回可循环访问 ArrayList 的枚举数
IEnumerator iea=a.GetEnumerator();
long start;
long end;
long result;
start=DateTime.Now.Ticks;
while( se.MoveNext() )
{
tem=se.Current;
}
end=DateTime.Now.Ticks;
result=end-start;
Console.WriteLine("StringCollection run ticks: " + result.ToString());
start=DateTime.Now.Ticks;
while (ies.MoveNext())
{
tem=(string)ies.Current;
}
end=DateTime.Now.Ticks;
result=end-start;
Console.WriteLine("StringCollection 2 run ticks: " + result.ToString() );
start=DateTime.Now.Ticks;
while(iea.MoveNext())
{
tem=(string)iea.Current;
}
end=DateTime.Now.Ticks;
result=end-start;
Console.WriteLine("ArrayList run ticks: " + result.ToString() );
Console.ReadLine();
}
}
}
using System.Collections;
using System.Collections.Specialized;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
string tem;
ArrayList a=new ArrayList();
StringCollection s=new StringCollection();
for(int i=1;i<3000000;i++)
{
string str=i.ToString();
a.Add(str);
s.Add(str);
}
//返回可循环访问 StringCollection 的 StringEnumerator
StringEnumerator se=s.GetEnumerator();
//显式接口实现,返回 IEnumerator,它可以循环访问 StringCollection。
IEnumerator ies=((IEnumerable)s).GetEnumerator();
//返回可循环访问 ArrayList 的枚举数
IEnumerator iea=a.GetEnumerator();
long start;
long end;
long result;
start=DateTime.Now.Ticks;
while( se.MoveNext() )
{
tem=se.Current;
}
end=DateTime.Now.Ticks;
result=end-start;
Console.WriteLine("StringCollection run ticks: " + result.ToString());
start=DateTime.Now.Ticks;
while (ies.MoveNext())
{
tem=(string)ies.Current;
}
end=DateTime.Now.Ticks;
result=end-start;
Console.WriteLine("StringCollection 2 run ticks: " + result.ToString() );
start=DateTime.Now.Ticks;
while(iea.MoveNext())
{
tem=(string)iea.Current;
}
end=DateTime.Now.Ticks;
result=end-start;
Console.WriteLine("ArrayList run ticks: " + result.ToString() );
Console.ReadLine();
}
}
}
其中一次运行结果如下:
反复试了几次,发现遍历集合中元素,ArrayList用的时间是最短的
为什么会出现这样的结果.那类StringCollection到底用在什么地方?
希望上面提到的知识对你有所提示
当然欢迎交流和指正
author:aierong
blog:http://www.cnblogs.com/aierong
email:aierong@126.com
我的系列文章
A.Sql Server2005 Transact-SQL 新兵器学习 B.MCAD学习
C.代码阅读总结
D.ASP.NET状态管理
E.DB(数据库)
F.WAP
G.WinForm
H.Flex
希望上面提到的知识对您有所提示,同时欢迎交流和指正
作者:aierong
出处:http://www.cnblogs.com/aierong
贴子以"现状"提供且没有任何担保,同时也没有授予任何权利!
本文版权归作者所有,欢迎转载!
原创技术文章和心得,转载注明出处!这也是对原创者的尊重!