Java容器類

來源:互聯網
上載者:User

標籤:tab   syn   例子   通過   索引   資料結構   array   注意   set   

Java 容器類List、ArrayList、Vector及map、HashTable、HashMap分別的區別一、List與ArrayList的區別      List->AbstractList->ArrayList      (1) List是一個介面,ArrayList是一個實現了List介面的具體類。      他們是父子關係,我們常用的是ArrayList,但常用List的引用去操作ArrayList      這是一個簡單的面向介面編程的一種,如:List myList = new ArrayList();      (2)他們主要是用來儲存對象的集合,記得是儲存對象的哦,你可別傳個int(類)進去      (3)要取出它裡面儲存的對象可以用下標,如:Object aaa = myList.get(0);      這樣我們就把儲存在myList裡的第一個對象取出來給了二、詳解      好像List和Map都是介面      不能執行個體化的      以前這麼寫List list = new Vector();      現在這麼寫List list = new ArrayList();      用ArrayList 代替了Vector 因為前者的效能比後者好;      但是兩個都是實現了List借口的      同理Map map = new HashTable();(以前)      Map map = new HashMap();(現在)ArrayList和HashMap是非同步,Vector和HashTable是同步的,所以Vector和HashTable是安全執行緒的,而ArrayList和HashMap並不是安全執行緒的。因為同步需要花費機器時間,所以Vector和HashTable的執行效率要低於ArrayList和HashMap。Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapList介面  List是有序的Collection,使用此介面能夠精確的控制每個元素插入的位置。使用者能夠使用索引(元素在List中的位置,類似於數組下標)來訪問List中的元素,這類似於Java的數組。和下面要提到的Set不同,List允許有相同的元素。  除了具有Collection介面必備的iterator()方法外,List還提供一個listIterator()方法,返回一個ListIterator介面,和標準的Iterator介面相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設定元素,還能向前或向後遍曆。  實現List介面的常用類有LinkedList,ArrayList,Vector和Stack。ArrayList類  ArrayList實現了可變大小的數組。它允許所有元素,包括null。ArrayList沒有同步。size,isEmpty,get,set方法已耗用時間為常數。但是add方法開銷為分攤的常數,添加n個元素需要O(n)的時間。其他的方法已耗用時間為線性。  每個ArrayList執行個體都有一個容量(Capacity),即用於儲存元素的數組的大小。這個容量可隨著不斷添加新元素而自動增加,但是增長演算法並沒有定義。當需要插入大量元素時,在插入前可以調用ensureCapacity方法來增加ArrayList的容量以提高插入效率。  和LinkedList一樣,ArrayList也是非同步的(unsynchronized)。Map介面  請注意,Map沒有繼承Collection介面,Map提供key到value的映射。一個Map中不能包含相同的key,每個key只能映射一個value。Map介面提供3種集合的視圖,Map的內容可以被當作一組key集合,一組value集合,或者一組key-value映射。HashMap類  HashMap和Hashtable類似,不同之處在於HashMap是非同步的,並且允許null,即null value和null key。,但是將HashMap視為Collection時(values()方法可返回Collection),其迭代子操作時間開銷和HashMap的容量成比例。因此,如果迭代操作的效能相當重要的話,不要將HashMap的初始化容量設得過高,或者load factor過低。1.List是介面,List特性就是有序,會確保以一定的順序儲存元素.ArrayList是它的實作類別,是一個用數組實現的List.Map是介面,Map特性就是根據一個對象尋找對象.HashMap是它的實作類別,HashMap用hash表實現的Map,就是利用對象的hashcode(hashcode()是Object的方法)進行快速散列尋找.(關於散列尋找,可以參看<<資料結構>>)2.一般情況下,如果沒有必要,推薦代碼只同List,Map介面打交道.比如:List list = new ArrayList();這樣做的原因是list就相當於是一個泛型的實現,如果想改變list的類型,只需要:List list = new LinkedList();//LinkedList也是List的實作類別,也是ArrayList的兄弟類這樣,就不需要修改其它代碼,這就是介面編程的優雅之處.另外的例子就是,在類的方法中,如下聲明:private void doMyAction(List list){}這樣這個方法能處理所有實現了List介面的類,一定程度上實現了泛型函數.3.如果開發的時候覺得ArrayList,HashMap的效能不能滿足你的需要,可以通過實現List,Map(或者Collection)來定製你的自訂類

Java容器類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.