浅谈:ArrayList,ListT,ListObject
最近看項目中有個地方用到了 List<Object> ,想到List<Object>能動態插入?object對象,而ArrayList也是動態插入object對象。我在想這兩個是不是同樣的功能呢,查看元數據代碼如下:
ArrayList
public?class?ArrayList?:?IList,?ICollection,?IEnumerable,?ICloneablepublic?virtual?int?Add(object?value);//添加一個對象List<T>
public?class?List<T>?:?IList<T>,?ICollection<T>,?IEnumerable<T>,?IList,?ICollection,?IEnumerablepublic?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看程序元數據也是不錯的學習方法。附上程序運行結果,不過有偏差,如果單獨運行ArrayList?或者List<Object>?它倆結果就相差不大,可是把List<Object>放在ArrayList后邊運行,就會顯得慢一些,估計也有程序問題吧,就到這了。以上純屬個人見解,如果錯誤,請不吝指出。
轉載于:https://blog.51cto.com/panzi/1591247
總結
以上是生活随笔為你收集整理的浅谈:ArrayList,ListT,ListObject的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信新功能看一看怎么使用 看一看使用方法
- 下一篇: 一步一步写算法(之洗牌算法)