List和ArrayList的區別
List是一個介面,而ListArray是一個類。
ListArray繼承並實現了List。
所以List不能被構造,但可以向上面那樣為List建立一個引用,而ListArray就可以被構造。
List list; //正確 list=null;
List list=new List(); // 是錯誤的用法
List list = new ArrayList();這句建立了一個ArrayList的物件後把上溯到了List。此時它是一個List物件了,有些ArrayList有但是List沒有的屬性和方法,它就不能再用了。
而ArrayList list=new ArrayList();建立一物件則保留了ArrayList的所有屬性。
這是一個例子:
import java.util.*;
public class TestList{
public static void main(String[] args){
List list = new ArrayList();
ArrayList arrayList = new ArrayList();
list.trimToSize(); //錯誤,沒有該方法。
arrayList.trimToSize(); //ArrayList裡有該方法。
}
}
編譯一下就知道結果了。
如果這個樣子:
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()呢?
如果直接宣告為ArrayList<String> list=new ArrayList<String>()這個也沒有問題。
而宣告成:List<String> list=new ArrayList<String>();這樣的形式使得list這個物件可以有多種的存在形式,比如要用連結串列存資料的話直接用LinkedList,使用ArrayList或者Vector直接通過list去=就可以了,這樣讓list這個物件活起來了,
再比如你需要換成其它的實現類,如 LinkedList或者Vector等等,這時你只要改變這一行就行了:
List list = new LinkedList(); 其它使用了list地方的程式碼根本不需要改動。
假設你開始用 ArrayList alist = new ArrayList(), 這下你有的改了,特別是如果你使用了 ArrayList特有的方法和屬性。
地區用 List arr = new ArrayList();定義;行業用 ArrayListarr = new ArrayList();定義;則說明,行業裡用到了ArrayList的特殊的方法.
另外的例子就是,在類的方法中,如下宣告:
private void doMyAction(List list){}
這樣這個方法能處理所有實現了List介面的類,一定程度上實現了泛型函式.
如果開發的時候覺得ArrayList,HashMap的效能不能滿足你的需要,可以通過實現List,Map(或者Collection)來定製你的自定義類.很多需求只能用一個list,記憶體有限,或者執行緒同步,不能有更多的集合物件,使得List總的介面來管理物件。
相關推薦
JAVA中 List和ArrayList的區別
屬性和方法 vector 實現類 多個 一個 什麽 性能 {} 等等 List是一個接口,而ListArray是一個類。 ListArray繼承並實現了List。 所以List不能被構造,但可以向上面那樣為List創建一個引用,而ListArray就可以被構造。 Li
List和ArrayList, Map和HashMap的區別
List是介面,List特性就是有序,會確保以一定的順序儲存元素. ArrayList是它的實現類,是一個用陣列實現的List. Map是介面,Map特性就是根據一個物件查詢物件. HashMap是它的實現類,HashMap用hash表實現的Map,就是利用物件的hashcode(hashcod
Java中List和ArrayList的區別(加入了個人見解)
轉載自:http://www.cnblogs.com/aisiteru/articles/1151874.html 第一次看這篇文章時,是在CSDN部落格中看到的,作者寫的初衷還是蠻好的,但是確實有錯誤的地方和不是很明白的地方。於是就很想去看看原文,
List 和 ArrayList 的區別
關於List和ArrayList、List<String> list = new ArrayList<String>(); List是一個介面,是Collection介面的一個子介面,是一個有序的集合。 ArrayList是List的一個實現類,
List和ArrayList的區別
List是一個介面,而ListArray是一個類。 ListArray繼承並實現了List。 所以List不能被構造,但可以向上面那樣為List建立一個引用,而ListArray就可以被構造。 List list; //正確 list=null; List list=new List();
陣列、List和ArrayList的區別
有些知識點可能平時一直在使用,不過實際開發中我們可能只是知其然不知其所以然,所以經常的總結會對我們的提高和進步有很大的幫助,這裡記錄自己在工作之餘的問題,持續更新,歡迎高手斧正. 陣列、List和ArrayList的區別 陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元素也
Java中List和ArrayList的區別
List是一個介面,而ListArray是一個類。 ListArray繼承並實現了List。 所以List不能被構造,但可以向上面那樣為List建立一個引用,而ListArray就可以被構造。 List list; //正確 list=null; Lis
List 和ArrayList的區別
difference betwee List and ArrayList:List: 兼有陣列和ArrayList的功能; 給定資料型別,可以新增以及刪除插入; 不用裝箱拆箱:給定明確的資料型別;擁有arraylist 和陣列的功能 List<string>
Array、List和ArrayList的區別與
Array 定義: public abstract class Array:ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuraEquatable 陣列在
C#陣列、List和ArrayList的區別
有些知識點可能平時一直在使用,不過實際開發中我們可能只是知其然不知其所以然,所以經常的總結會對我們的提高和進步有很大的幫助,這裡記錄自己在工作之餘的問題,持續更新,歡迎高手斧正. 【陣列】 陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元素也很簡
2.請介紹一下List和ArrayList的區別,ArrayList和HashSet區別
引用 equal ash arraylist 無序 lis 檢索 重復 lec 第一問: List是接口,ArrayList實現了List接口。 第二問: ArrayList實現了List接口,HashSet實現了Set接口,List和Set都是繼承Colle
hibernate中hql語句中list和iterate區別
每次 hibernate 寫入 所有 讀取 條件 iter 查詢 hql 1.使用list()方法獲取查詢結果,每次發出一條語句,獲取全部數據。2.使用iterate()方法獲取查詢結果,先發出一條SQL語句用來查詢滿足條件數據的id,然後依次按照這些id查詢記錄,也就是要
LinkedList和ArrayList區別
else array RR for 數組下標 遍歷 如果 ring arraylist 查詢 LinkedList查詢用的遍歷,AyyayList查詢用的是數組下標,所以對於查詢ArrayList性能高於LinkedList 新增 新增在末尾或者中
list和dic區別
注意:dict內部存放的順序和key放入的順序是沒有關係的。 和list比較,dict有以下幾個特點: 查詢和插入的速度極快,不會隨著key的增加而變慢; 需要佔用大量的記憶體,記憶體浪費多。 而list相反: 查詢和插入的時間隨著元素的增加而增加; 佔用空間小,浪費
Vector和ArrayList區別以及Vector並非是絕對執行緒安全的
首先看這兩類都實現List介面,而List介面一共有三個實現類,分別是ArrayList、Vector和LinkedList。List用於存放多個元素,能夠維護元素的次序,並且允許元素的重複。3個具體實現類的相關區別如下:ArrayList是最常用的List實現類,內部是通過
vector和arraylist區別
有三點需要注意: 第一: 當Vector元素超過他的初始大小時,Vector會將它的容積翻倍,而Arraylist只會增加百分之五十左右,這樣arraylist就有利於節約空間。 第二:這兩個類都是實現了list介面,都屬於有序集合,有序集合,顧名思義嗎,就是儲存在這兩個集合中的元
比較List和ArrayList的效能及ArrayList和LinkedList優缺點
List和ArrayList的效能比較 在使用ArrayList這樣的非泛型集合的過程中,要進行裝箱和拆箱操作,會有比較大的效能損失,而使用泛型集合就沒有這樣的問題。List是泛型,而ArrayList是非泛型。存資料島ArrayList都需要專程object,讀取又要轉換成相應的資料型別,List則不需要。
集合中LIst和ArrayList以及Hash一些知識點總結
建一個原陣列的拷貝,並修改原陣列,指向這個新建陣列。原陣列自動拋棄(<a href="https://www.baidu.com/s?wd=java%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6&tn=44039180_cpr&fenlei=mv6quA
python list和tuple區別
#只建立一個tuple 需要加,消除歧義 a_tuple=(2,) #在tuple中建立list mixed_tuple=(1,2,['a','b']) print("mixed_tuple"+str
C#中數組、ArrayList和List三者的區別
collect comm 兩個 根據 -s lis 數據打包 功能 target 在C#中數組,ArrayList,List都能夠存儲一組對象,那麽這三者到底有什麽樣的區別呢。 數組 數組在C#中最早出現的。在內存中是連續存儲的,所以它的索引速度非常快,而且賦值