<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一、Collections類(lèi)和Collection接口

             Collections是針對(duì)集合類(lèi)的一個(gè)幫助類(lèi),他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排序、線(xiàn)程安全化等操作。

        Collection是最基本的集合接口,一個(gè)Collection代表一組Object,即Collection的元素(Elements)。一些 Collection允許相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接繼承自Collection的 類(lèi),Java SDK提供的類(lèi)都是繼承自Collection的“子接口”如List和Set。

    二、現(xiàn)在來(lái)談?wù)凧ava集合的一些實(shí)現(xiàn)類(lèi)。

    Collection
    List

    ArreyList 

    Vector

    LinkedList

    │└Stack

    └Set

    HashSet
    LinkedHashSet

    │└TreeSet

     

    List代表有序、重復(fù)的集合

    1.ArrayList類(lèi)
      ArrayList實(shí)現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒(méi)有同步。
    size,isEmpty,get,set方法運(yùn)行時(shí)間為常數(shù)。但是add方法開(kāi)銷(xiāo)為分?jǐn)偟某?shù),添加n個(gè)元素需要O(n)的時(shí)間。其他的方法運(yùn)行時(shí)間為線(xiàn)性。
      每個(gè)ArrayList實(shí)例都有一個(gè)容量(Capacity),即用于存儲(chǔ)元素的數(shù)組的大小。這個(gè)容量可隨著不斷添加新元素而自動(dòng)增加,但是增長(zhǎng)算法 并沒(méi)有定義。當(dāng)需要插入大量元素時(shí),在插入前可以調(diào)用ensureCapacity方法來(lái)增加ArrayList的容量以提高插入效率。
      和LinkedList一樣,ArrayList也是非同步的(unsynchronized)。

    2.Vector類(lèi)
      Vector非常類(lèi)似ArrayList,但是Vector是同步的。由Vector創(chuàng)建的Iterator,雖然和ArrayList創(chuàng)建的Iterator是同一接口,但是,因?yàn)閂ector是同步的,當(dāng)一個(gè)Iterator被創(chuàng)建而且正在被使用,另一個(gè)線(xiàn)程改變了Vector的狀態(tài)(例如,添加或刪除了一些元素),這時(shí)調(diào)用Iterator的方法時(shí)將拋出ConcurrentModificationException,因此必須捕獲該異常。

     

    3.LinkedList類(lèi)
      LinkedList實(shí)現(xiàn)了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在 LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊(duì)列(queue)或雙向隊(duì)列(deque)。
      注意LinkedList沒(méi)有同步方法。如果多個(gè)線(xiàn)程同時(shí)訪問(wèn)一個(gè)List,則必須自己實(shí)現(xiàn)訪問(wèn)同步。一種解決方法是在創(chuàng)建List時(shí)構(gòu)造一個(gè)同步的List:
        List list = Collections.synchronizedList(new LinkedList(...));

     

    4.Stack 類(lèi)
      Stack繼承自Vector,實(shí)現(xiàn)一個(gè)后進(jìn)先出的堆棧。Stack提供5個(gè)額外的方法使得Vector得以被當(dāng)作堆棧使用。基本的push和pop方法,還有peek方法得到棧頂?shù)脑兀琫mpty方法測(cè)試堆棧是否為空,search方法檢測(cè)一個(gè)元素在堆棧中的位置。Stack剛創(chuàng)建后是空棧。

     

    Set代表無(wú)序、不可重復(fù)的集合

     

    Map
    HashMap

    Hashtable

    TreeMap
    └WeakHashMap

    Map沒(méi)有繼承Collection接口

    1.Hashtable類(lèi)
      Hashtable繼承Map接口,實(shí)現(xiàn)一個(gè)key-value映射的哈希表。任何非空(non-null)的對(duì)象都可作為key或者value。Hashtable是同步的。

     

    2.HashMap類(lèi)
      HashMap和Hashtable類(lèi)似,不同之處在于 HashMap是非同步的,并且允許null,即null value和null key。,但是將HashMap視為Collection時(shí) (values()方法可返回Collection),其迭代子操作時(shí)間開(kāi)銷(xiāo)和HashMap的容量成比例。因此,如果迭代操作的性能相當(dāng)重要的話(huà),不要 將HashMap的初始化容量設(shè)得過(guò)高,或者load factor過(guò)低。

    3.WeakHashMap類(lèi)
      WeakHashMap是一種改進(jìn)的HashMap,它對(duì)key實(shí)行“弱引用”,如果一個(gè)key不再被外部所引用,那么該key可以被GC回收。

     

     

    三、集合類(lèi)的遍歷

    遍歷通用Collection

    Iterator it = collection.iterator(); // 獲得一個(gè)迭代子
      while(it.hasNext()) {
       Object obj = it.next(); // 得到下一個(gè)元素
    }


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    posts - 34, comments - 38, trackbacks - 0, articles - 0

    Copyright © 陳小東

    主站蜘蛛池模板: 精品国产_亚洲人成在线| 亚洲黄色网址在线观看| 亚洲第一成年网站视频| 免费可以看黄的视频s色| 亚洲成a人片毛片在线| 国产h肉在线视频免费观看| 亚洲最新永久在线观看| 人妻丰满熟妇无码区免费| 亚洲一区二区三区首页 | 亚洲精华液一二三产区| 午夜免费福利网站| 蜜臀亚洲AV无码精品国产午夜.| 午夜两性色视频免费网站| 亚洲国产精品无码久久| 国产一级高清视频免费看| 理论亚洲区美一区二区三区| 亚洲精品无码你懂的网站| 国产99视频精品免费视频76| 国产亚洲成av片在线观看| 日本免费污片中国特一级| 亚洲欧洲日韩综合| 无码一区二区三区免费视频| 国产成人人综合亚洲欧美丁香花 | a级毛片毛片免费观看久潮| 亚洲国产天堂久久综合网站| 美女被暴羞羞免费视频| 亚洲免费在线视频| 91国内免费在线视频| 亚洲性久久久影院| 一个人免费视频在线观看www| 久久精品国产亚洲AV麻豆王友容 | 国产精品成人亚洲| 亚洲综合熟女久久久30p| 8x8×在线永久免费视频| 在线a亚洲老鸭窝天堂av高清| 国产成人免费a在线视频app| 国产成人在线免费观看| 一级毛片免费在线| 久久精品国产亚洲av日韩| 永久黄网站色视频免费直播| 国产成人免费ā片在线观看老同学|