今天早上突然想起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();
}
}
}
其中一次運行結果如下:
反覆試了幾次,發現遍曆集合中元素,ArrayList用的時間是最短的
為什麼會出現這樣的結果.那類StringCollection到底用在什麼地方?
希望上面提到的知識對你有所提示
當然歡迎交流和指正
author:aierong
blog:http://www.cnblogs.com/aierong
email:aierong@126.com