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

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

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

    統計

    留言簿(1)

    DB

    Others

    QA

    Tech Website

    閱讀排行榜

    評論排行榜

    Java集合框架比較


     

    數組類ArrayJava中最基本的一個存儲結構。它用于存儲一組連續的對象或基本類型的數據。其中的元素的類型必須相同。

    Array是最有效率的一 種:

    1、效率高,但容量固定且無法動態改變。 Array還有一個缺點是,無法判斷其中實際存有多少元素,length只是告訴我們Array的容量。

    2Java中有一個Arrays類,專門用來操作Array,提供搜索、排序、復制等靜態方法。 equals():比較兩個Array是否相等,Array擁有相同元素個數,且所有對應元素兩兩相等。 fill():將值填入Array中。 sort():用來對Array進行排序。 binarySearch():在排好序的Array中尋找元素。 System.arraycopy()Array的復制。

    Java Collections Framework成員主要包括兩種類型,即:CollectionMap類型。 Java中提供了CollectionMap接口。其中ListSet繼承了Collection接口;VectorArrayList LinkedList三個類實現List接口,HashSetTreeSet實現Set接口,HashTableHashMap TreeMap實現Map接口。由此可見,Java中用8種類型的基本數據結構來實現其Collections Framework;下面分別進行介紹。

    Vector:基于ArrayList,性能也就不可能超越Array,并且Vector"sychronized",這個也是VectorArrayList的唯一的區別。

    ArrayList:同Vector一樣是一個基于Array的,但是不同的是ArrayList不是同步的。所以在性能上要比Vector優越一些,但 是當運行到多線程環境中時,可需要自己在管理線程的同步問題。從其命名中可以看出它是一種類似數組的形式進行存儲,因此它的隨機訪問速度極快。

    LinkedListLinkedList不同于前面兩種List,它不是基于Array的,所以不受Array性能的限制。它每一個節點(Node 都包含兩方面的內容:

    1、節點本身的數據(data);

    2、下一個節點的信息(nextNode)。所以當對LinkedList做添加,刪除動作的時候 就不用像基于ArrayList一樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了所以它適合于進行頻繁進行插入和刪除操 作。這就是LinkedList的優勢。Iterator只能對容器進行向前遍歷,而 ListIterator則繼承了Iterator的思想,并提供了對List進行雙向遍歷的方法。

    List總結:

    1、所有的List中只能容納單個不同類型的對象組成的表,而不是KeyValue鍵值對。例如:[ tom,1,c ]

    2、所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]

    3、所有的List中可以有null元素,例如[ tom,null,1 ]

    4、基于ArrayListVectorArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作

    HashSet:雖然SetList都實現了Collection接口,但是他們的實現方式卻大不一樣。List基本上都是以Array為基礎。但是 Set則是在HashMap的基礎上來實現的,這個就是SetList的根本區別。HashSet的存儲方式是把HashMap中的Key作為Set 對應存儲項,這也是為什么在Set中不能像在List中一樣有重復的項的根本原因,因為HashMapkey是不能有重復的。HashSet能快速定位 一個元素,但是放到HashSet中的對象需要實現hashCode()方法0

    TreeSet則將放入其中的元素按序存放,這就要求你放入其中的對象是可排序的,這就用到了集合框架提供的另外兩個實用類Comparable Comparator。一個類是可排序的,它就應該實現Comparable接口。有時多個類具有相同的排序算法,那就不需要重復定義相同的排序算法,只要實現Comparator接口即可。TreeSetSortedSet的子類,它不同于HashSet的根本就是TreeSet是有序的。它是通過SortedMap來實現的。

    Set總結:

    1Set實現的基礎是MapHashMap);

    2Set中的元素是不能重復的,如果使用add(Object obj)方法添加已經存在的對象,則會覆蓋前面的對象; Set里的元素是不能重復的,那么用什么方法來區分重復與否呢? 是用==還是equals()? 它們有何區別? Set里的元素是不能重復的,即不能包含兩個元素e1e2e1.equalse2))。那么用iterator()方法來區分重復與否。 equals()是判讀兩個Set是否相等。==方法決定引用值(句柄)是否指向同一對象。

    HashMapTreeMapHashtable

    1HashMap也用到了哈希碼的算法,以便快速查找一個鍵,TreeMap則是對鍵按序存放,因此它有一些擴展的方法,比如 firstKey(),lastKey()等。

    2Hashtable:不允許空(null)鍵(key)或值(value),Hashtable的方法是Synchronize的,在多個線程訪問 Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。 HashtableHashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。

    3HashMapHashtable的區別:HashMapHashtable(線程案例的)的輕量級實現(非線程安全的實現),他們都完成了Map接口。主要區別在于HashMap允許空(null)鍵key)或值(value,非同步,由于非線程安全,效率上可能高于Hashtable

    Map總結:

    是一種把鍵對象和值對象進行關聯的容器,Map有兩種比較常用的實現: HashTableHashMapTreeMap

    posted on 2011-03-07 14:25 XXXXXX 閱讀(1583) 評論(0)  編輯  收藏 所屬分類: Programing

    主站蜘蛛池模板: 在线观看片免费人成视频无码| 免费在线人人电影网| 日韩人妻一区二区三区免费| 亚洲无码黄色网址| 久久WWW免费人成—看片| 国产专区一va亚洲v天堂| 精品久久久久久无码免费| 亚洲毛片αv无线播放一区| 两性色午夜视频免费播放| 亚洲人成色777777在线观看| 久久精品国产大片免费观看| 亚洲第一精品在线视频| 亚洲免费一级视频| 亚洲小说图区综合在线| 免费jjzz在在线播放国产| 免费看内射乌克兰女| 亚洲国产精品无码久久久蜜芽 | 国产精品免费看久久久无码| 国产精品亚洲综合| 中文字幕人成人乱码亚洲电影| 久久成人免费电影| 亚洲一区二区三区在线网站| 国产性生交xxxxx免费| 黄色视屏在线免费播放| 亚洲综合色丁香麻豆| 日韩中文字幕在线免费观看| eeuss免费影院| 亚洲成a人片7777| 国产在线观看免费不卡| 国产一精品一AV一免费| 国产精品亚洲精品观看不卡| 国产一级淫片a免费播放口之| a级成人毛片免费视频高清| 亚洲av永久无码嘿嘿嘿| 免费一级毛片正在播放| 国产精品区免费视频| 亚洲日韩一区二区一无码| 亚洲综合在线另类色区奇米| 91手机看片国产永久免费| 伊人久久国产免费观看视频| 亚洲精品美女在线观看|