架構簡述
集合架構的標準定義是 “為表示和操作集合而規定的一種統一的標準的體繫結構。任何集合架構都包含三大塊內容:對外的介面、介面的實現和對集合運算的演算法。”
按照我的理解,用最通俗的話來說,就是用資料結構裡的結構(隊列, 棧,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
*/