<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 © 陳小東

    主站蜘蛛池模板: 亚洲欧美自偷自拍另类视| 亚洲高清一区二区三区电影| 国产成人精品免费大全| 麻豆国产入口在线观看免费| 午夜国产大片免费观看| 久久久久国产亚洲AV麻豆| 免费观看四虎精品成人| 国产免费爽爽视频在线观看| 四虎影院免费在线播放| 亚洲一区二区三区在线观看精品中文 | 亚洲人配人种jizz| 国产精品亚洲色图| 亚洲视频免费一区| 亚洲国产精品日韩在线| 成人免费在线视频| 色网站在线免费观看| 久久久久久亚洲精品不卡| 91成人免费观看在线观看| 天天拍拍天天爽免费视频| 亚洲精品动漫免费二区| 亚洲精品国产高清不卡在线| 亚洲一区二区三区免费观看| 成人无码区免费A∨直播| 久久精品国产精品亚洲艾草网| 亚洲日韩精品无码专区| 四虎亚洲国产成人久久精品| 亚洲最大免费视频网| 黑人粗长大战亚洲女2021国产精品成人免费视频| 亚洲欧美国产国产一区二区三区| 免费jjzz在在线播放国产| 日韩电影免费在线观看网站| 亚洲日韩中文在线精品第一| 国产大陆亚洲精品国产| 亚洲日韩欧洲乱码AV夜夜摸| 99精品视频免费观看| 亚洲av无码专区在线电影| 在线a级毛片免费视频| 免费无码AV一区二区| 久久久久亚洲AV成人片| 免费观看的av毛片的网站| 久久免费国产精品|