浅谈:ArrayList,ListT,ListObject
最近看項目中有個地方用到了 List<Object> ,想到List<Object>能動態(tài)插入?object對象,而ArrayList也是動態(tài)插入object對象。我在想這兩個是不是同樣的功能呢,查看元數(shù)據(jù)代碼如下:
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);//添加一個對象比較兩者,發(fā)現(xiàn)兩者的Add方法一個是可重寫的,并且返回當(dāng)前索引,一個就是void?方法,T?item,當(dāng)T為Object的時候,個人認(rèn)為兩者差距不大,但是他們?nèi)绻鸄dd?值類型的時候就會引發(fā)裝箱操作,影響性能,通過測試發(fā)現(xiàn)(測試代碼在附件中),ArrayList?和List<Object>?兩者執(zhí)行同樣的操作,效率差不多,無論是有無拆裝箱。但是,如果用到List<T>?時候,最好不要把 T?傳入Object ,否則失去了泛型T?的意義。如果執(zhí)行int操作,就用List<int>.
總的來說呢,程序開發(fā)過程中盡量避免拆裝箱的操作,頻繁的拆裝箱會使效率降低很多。
題外話:以前看面試題目,問到ArrayList和List的區(qū)別,感覺一頭霧水,直到現(xiàn)在才明白,原來問的是這么個問題,唉,程序不能只寫,也得思考啊,另外,F12看程序元數(shù)據(jù)也是不錯的學(xué)習(xí)方法。附上程序運行結(jié)果,不過有偏差,如果單獨運行ArrayList?或者List<Object>?它倆結(jié)果就相差不大,可是把List<Object>放在ArrayList后邊運行,就會顯得慢一些,估計也有程序問題吧,就到這了。以上純屬個人見解,如果錯誤,請不吝指出。
轉(zhuǎn)載于:https://blog.51cto.com/panzi/1591247
總結(jié)
以上是生活随笔為你收集整理的浅谈:ArrayList,ListT,ListObject的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信新功能看一看怎么使用 看一看使用方法
- 下一篇: 一步一步写算法(之洗牌算法)