當集合類僅僅存放不定數量字元類型的對象時,System.Collections.ArrayList和System.Collections.Specialized.StringCollection的區別

來源:互聯網
上載者:User

今天早上突然想起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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.