[JAVA]集合架構簡述,HashTable、ArrayList、Vector 記錄

來源:互聯網
上載者:User
架構簡述   

       集合架構的標準定義是 “為表示和操作集合而規定的一種統一的標準的體繫結構。任何集合架構都包含三大塊內容:對外的介面、介面的實現和對集合運算的演算法。”


       按照我的理解,用最通俗的話來說,就是用資料結構裡的結構(隊列, 棧,Tree,Map)把各種編程時用到的資料類型籠統的裝起來,裝在一個盒子裡。然後利用這種演算法的特性對盒子裡的資料進行排序、尋找、插入、返回各種操作。


        這樣一來,架構的好處就很明顯了。不需要自己每次單獨為當前程式的資料設計獨特的演算法和操作;不需要關心程式的底層設計,讓自己更關注程式的整體方面,寫代碼的品質和速度更優。


java集合簡述

        java集合架構就是基於上述定義開發的用於java的編程架構。

        Collection介面是基礎介面,提供了添加、刪除、判斷是否空、清空、迭代、返回數組等方法。


        List、Set、Map是這個集合體系中最主要的三個介面。其中List,Set介面繼承自Collection介面,並做了一些具體的不同類型的擴充。Map則是把“鍵-值”進行關聯。


        List具體實現了Arraylist和Linklist,從名字可以看出一個是數組實現一個是鏈表實現的。List介面都是把資料有序放入容器,且不允許重複。Set的具體實現有Hashset和Treeset,不同於List介面的是Set介面裡的對象元素是不能重複的。Map介面是把 “鍵-值”關聯的介面,也就是建立一個映射關係,例如 鍵=“登陸視窗”  值=FrmLogin,也就是把每一個鍵對應一個值,所以鍵不能有重複,值可以有重複,可以進行put和set操作。


 

有序否

允許元素重複否

Collection

否

是

List

是

是

Set

AbstractSet

否

否

HashSet

TreeSet

是(用二叉樹排序)

Map

AbstractMap

否

使用key-value來映射和儲存資料,

Key必須惟一,value可以重複。

HashMap

TreeMap

是(二叉樹排序)

              

       除了這些介面,還有一些java早期的遺留容器。          

       數組 Vector,通過addElement()加入一個對象,用elementAt()取出它,還可以查詢當前所儲存的對象的個數size(); 雜湊表 Hashtable 使用put和set設定和取出關聯索引值。

     

//Hashtableprivate static Hashtable<String, JFrame> table = new Hashtable<String, JFrame>();table.get(str);table.set(str,frm);//Arraylistprivate ArrayList<PrintWriter> printWriter = new ArrayList<PrintWriter>();printWriter.add(printWriterToClient);  //Linklistprivate LinkedList<String>msglist = new LinkedList<String>();msglist.addFirst(stringFromClient); if (!msglist.isEmpty())                    {                        s = (String) msglist.removeLast();                        txtContenText.append(s + "\n");                     }//VectorVector vecFields = new Vector();vecFields.addElement("string_test_sample");//HashSetSet hashSet = new HashSet();hashSet.add(new String("aaa"));//共有的方法add(Object)                添加元素(Object);addAll(Collection)         添加一個集合(Collection);remove(Object)             刪除一個指定的元素(Object);removeAll(Collection)      刪除一個指定的集合(Collection);size()                     容量;isEmpty()                  判斷是否為空白,即[]或size()=0,返回true或false;contains(Object)           判斷某個元素(Object)是否在集合中,返回true或false;containsAll(Collection)    判斷是否包含某個集合(Collection);clear()                    清空,使得size()=0;toArray()                  轉換成一個Object[];iterator()                 構造一個迭代器,用於輸出HashSet中的元素

       具體使用哪種集合介面要看程式裡的資料的規模,類型,操作方法等,從而選出最優的集合,使程式開發最輕鬆高效。

 /*

******逸雨清風 出品

******2013.6.30

******http://blog.csdn.net/xyydyyqf

*/

             

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.