實現模式之容器

2021-09-01 07:28:00 字數 1177 閱讀 5532

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 實現在時間...