背景
最近在學習大話設計模式時,遇到了關於list的一系列問題,於是就想搞清楚。
List與IList區別
IList是一個接口,定義了一些方法
List是一個泛型類,它已經實現了IList定義的那些方法
如果只是作爲集合數據的承載體,那麼這兩個是沒有區別的。
但是一旦與方法聯繫起來,IList就不能使用了。因爲IList是一個接口,裏面並沒有多少可調用的方法。而List使用就非常方便了,你可以排序、篩選·······
List與ArrayList區別
List爲泛型集合
ArrayList爲非泛型集合。
這兩者大部分方法都是非常相似的,它們都繼承了IList接口。
ArrayList可以插入不同的數據,是Object類型的集合。所以在存取數據時比較麻煩,需要裝箱、拆箱操作。
List只能在實例化時定義一種類型,存儲數據只能存儲同一種類型,否則會報錯。相對來說它比較安全。
--------------------------------------------------------------------------------------------------------------------------
List list = new ArrayList();
這句創建了一個ArrayList的對象後把上溯到了List。此時它是一個List對象了,有些ArrayList有但是List沒有的屬性和方法,它就不能再用了。
ArrayList list=new ArrayList();
創建一對象則保留了ArrayList的所有屬性。