您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關java中的list和arraylist有什么區別,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
區別:
List是一個接口,而ArrayList是List接口的一個實現類。ArrayList類繼承并實現了List接口。
因此,List接口不能被構造,也就是我們說的不能創建實例對象,但是我們可以像下面那樣為List接口創建一個指向自己的對象引用,而ArrayList實現類的實例對象就在這充當了這個指向List接口的對象引用。
Animals.java public abstract class Animals { //動物名字 String name; //動物叫聲 public void shout(){ System.out.println("叫聲----"); } } Dog.java public class Dog extends Animals { //狗類獨有的方法 public void guard(){ System.out.println("狗獨有的看門本領"); } } Test.java public class Test { public static void main(String[] args) throws ClassNotFoundException { Animals a1 = new Animals(); Animals a2 = new Dog(); } }
List list;//正確,list = null; List list = new List();//是錯誤的用法
List list = new ArrayList();
這句創建了一個ArrayList實現類的對象后把它上溯到了List接口。此時它就是一個List對象了,它有些ArrayList類具有的,但是List接口沒有的屬性和方法,它就不能再用了,而
ArrayList list=newArrayList();
創建一對象則保留了ArrayList的所有屬性和方法。
Test.java public class Test { public static void main(String[] args) throws ClassNotFoundException { Animals a2 = new Dog(); a2.shout(); a2.guard(); } }
父類不能再調用父類出現而子類沒有出現的方法。否則會編譯出錯。
如果是下面這個樣子的:
List a=new ArrayList();
則a擁有List的所有屬性和方法,不會擁有其實現類ArrayList的獨有的屬性和方法。
如果List與ArrayList中有相同的屬性(如int i),有相同的方法(如void f()),
則a.i是調用了List中的i,a.f()是調用了ArrayList中的f();
問題的關鍵:
為什么要用 List list = new ArrayList()
而不用 ArrayList alist = new ArrayList()
呢?
問題就在于List接口有多個實現類,現在你用的是ArrayList,也許哪一天你需要換成其它的實現類,如:
LinkedList或者Vector等等,這時你只要改變這一行就行了: List list = new LinkedList();
其它使用了list地方的代碼根本不需要改動。
假設你開始用ArrayList alist = new ArrayList()
, 這下你有的改了,特別是如果你使用了ArrayList實現類特有的方法和屬性。
看完上述內容,你們對java中的list和arraylist的區別有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。