java中的集合和數組

來源:互聯網
上載者:User

標籤:定製   聲明   void   private   blog   效能   set   實作類別   優雅   

數組Array和集合的區別: (1)數組是大小固定的,並且同一個數組只能存放類型一樣的資料(基本類型/參考型別) (2)JAVA集合可以儲存和運算元目不固定的一組資料。 (3)若程式時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。 聯絡:使用相應的toArray()和Arrays.asList()方法可以回想轉換。 一.集合的體繫結構: List、Set、Map是這個集合體系中最主要的三個介面。 List和Set繼承自Collection介面。 Map也屬於集合系統,但和Collection介面不同。 Set不允許元素重複。HashSet和TreeSet是兩個主要的實作類別。Set 只能通過遊標來取值,並且值是不能重複的。 List有序且允許元素重複。ArrayList、LinkedList和Vector是三個主要的實作類別。 ArrayList 是線程不安全的, Vector 是安全執行緒的,這兩個類底層都是由數組實現的 LinkedList 是線程不安全的,底層是由鏈表實現的 Map 是索引值對集合。其中key列就是一個集合,key不能重複,但是value可以重複。 HashMap、TreeMap和Hashtable是Map的三個主要的實作類別。 HashTable 是安全執行緒的,不能儲存 null 值 HashMap 不是安全執行緒的,可以儲存 null 值 二.List和ArrayList的區別   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.