淺談:ArrayList,List<T>,List<Object>

來源:互聯網
上載者:User

標籤:arraylist list<object>

最近看項目中有個地方用到了 List<Object> ,想到List<Object>能動態插入 object對象,而ArrayList也是動態插入object對象。我在想這兩個是不是同樣的功能呢,查看中繼資料代碼如下:

ArrayList

public class ArrayList : IList, ICollection, IEnumerable, ICloneable
public virtual int Add(object value);//添加一個對象

List<T>

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
public void Add(T item);//添加一個對象

比較兩者,發現兩者的Add方法一個是可重寫的,並且返回當前索引,一個就是void 方法,T item,當T為Object的時候,個人認為兩者差距不大,但是他們如果Add 實值型別的時候就會引發裝箱操作,影響效能,通過測試發現(測試代碼在附件中),ArrayList 和List<Object> 兩者執行同樣的操作,效率差不多,無論是有無拆裝箱。但是,如果用到List<T> 時候,最好不要把 T 傳入Object ,否則失去了泛型T 的意義。如果執行int操作,就用List<int>.


總的來說呢,程式開發過程中盡量避免拆裝箱的操作,頻繁的拆裝箱會使效率降低很多。

題外話:以前看面試題目,問到ArrayList和List的區別,感覺一頭霧水,直到現在才明白,原來問的是這麼個問題,唉,程式不能唯寫,也得思考啊,另外,F12看程式中繼資料也是不錯的學習方法。附上程式運行結果650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/57/1D/wKioL1SSNPGRK6ZNAAEAjzE_B7w360.jpg" title="QQ圖片20141218095444.png" alt="wKioL1SSNPGRK6ZNAAEAjzE_B7w360.jpg" />,不過有偏差,如果單獨運行ArrayList 或者List<Object> 它倆結果就相差不大,可是把List<Object>放在ArrayList後邊運行,就會顯得慢一些,估計也有程式問題吧,就到這了。以上純屬個人見解,如果錯誤,請不吝指出。


本文出自 “Pz的技術實訓基地” 部落格,請務必保留此出處http://panzi.blog.51cto.com/4738203/1591247

淺談:ArrayList,List<T>,List<Object>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.