標籤: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>