1. list
list裡面的元素是有序的,兩個常用實現類是arraylist與linkedlist。這兩個實現類的效能恰如映象,arraylist的訪問速度快,新增和刪除元素的速度慢;而linkedlist正好相反。
2. set
set總共有3種實現:hashset,linkedhashset和treeset。hashset速度最快,但其中的元素是無序的。linkedhashset按照元素被加入容器的順序來對元素排序,但代價卻是新增和刪除元素需要額外消耗30%的時間。treeset用comparator來保持元素的順序,不過在新增刪除元素的時候複雜度隨著容器的增大而公升高。
3.map
map實現類與set類似,hashmap最快,linkedhashmap儲存著元素的順序,迭代順序是它們加入容器的順序。treemap基於鍵的順序進行迭代,但是插入和檢查元素的存在性隨著元素的增多而公升高。
4. collections
工具類collections是乙個類庫,它提供了一些不能與任何一款容器介面完美契合的容器操作。
4.1 查詢
collections提供了查詢列表中某乙個元素在列表中索引的方法indexof(), 不過該方法的操作耗時與列表的尺寸成正比。如果列表是有序的,可以呼叫collections.binarysearch(list,element)來獲取元素在列表中的索引。
4.2 排序
reserve(list) 將容器中元素順序反置。
shuffle(list) 隨機打亂元素順序。
sort(list)和sort(list,comparator) 將元素按公升序排列。
4.3 不可修改的容器
目前,最基本的容器介面允許容器被修改。如果要把容器傳入不信任的**,可以用collections把它包裹到乙個特殊的實現類裡面,如果客戶試圖修改它,就丟擲執行異常。
比如:listlist = new arraylist();
list.add("世界第一");
collectionunmodifylist = collections.unmodifiablecollection(list);
iteratorlistiterator = unmodifylist.iterator();
listiterator.next();
listiterator.remove();//這裡會報錯
通過容器實現單例模式
今天再為大家提供乙個實現單例模式的方法,註冊式單例模式。首先建立乙個容器類,用來盛放建立的單例。public class containersingleton2 private static map ioc newconcurrenthashmap public static object geti...
Spring之IOC容器的實現
控制反 依賴物件的獲得被反轉了,即依賴注入。beandefinition用來管理基於spring的應用中的各種物件以及它們之間的相互依賴關係。抽象了我們對bean的定義,是讓容器起作用的主要資料模型。依賴反轉功能都是圍繞對beandefinition的處理來完成的。程式設計式使用ioc容器的過程 c...
STL容器之size 函式的實現
vector o 1 list o n deque 以下 以下是 片段 class vector iterator begin iterator end protected tp m start tp m finish tp m end of storage 可見,vector的size 實現在時間...