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

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

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

    swzhebei

    常用鏈接

    統計

    最新評論

    • 1.?re: 調用百度地圖小實例
    • 如果我有100個經緯度 請問,您是不是再代碼里寫100個?你這樣沒有價值,如何獲取動態的請說明!
    • --toly
    • 2.?re: 調用百度地圖小實例
    • 更改經緯度就不行了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    • --你姥姥

    java集合詳解

    本文系 www.javady.com網站原創
    總接口:Iterable<T>  實現這個接口允許對象成為 "foreach" 語句的目標。

       Collection<E> 層次結構 中的根接口。Collection 表示一組對象

    一、   List  :實現 collection接口  有序的集合  可以允許重復

    ArrayList                           
    初始大小 10
    擴容因子 (大小*3)/2 + 1
    擴容例子 10 超過時之后擴容到  16  然后  25 然后 38...
    數據處理 刪除其中一個元素后后面的元素會自動向前推
    線程是否安全 不安全
    優勢 ArrayList的優勢在于讀取和表尾插入
    多線程使用 List list = Collections.synchronizedList(new ArrayList(…))

          

    LinkedList
    說明 List接口的鏈接列表實現 。
    初始大小 1
    數據處理 刪除其中一個元素后后面的元素會自動向前推,

     

    LinkedList 中的鏈接關系是由 Entity實現的,

    每個Entity都有 上一個Entity引用 下一個Entity引用

    本身元素值Entry(E element, Entry<E> next, Entry<E> previous)

    LinkedList 類還為在列表的開頭及結尾 get、remove 和 insert

    元素提供了統一的命名方法。

    此類實現 Queue 接口,為 add、poll 等提供先進先出隊列操作

    優勢 LinkedList的優勢在于表中插入和刪除
    線程是否安全 不安全 ,可以使用如下進行安全處理

     

    List list = Collections.synchronizedList(new LinkedList(...));

     

    Vector
    說明 Vector 類可以實現可增長的對象數組
    初始大小 10
    擴容因子 1 ,  默認擴容一倍
    擴容例子 10 超過時之后擴容到  20  然后  40 然后 80…
    數據處理 刪除其中一個元素后后面的元素會自動向前推
    是否同步 Vector 是同步的
    用法 一般在多線程中使用對于一般的數據存儲直接用ArrayList

     

    Stack
    類型解釋 表示后進先出(LIFO)的對象堆棧 。

     

    它通過五個操作對類 Vector 進行了擴展 ,

    允許將向量視為堆棧。

    它提供了通常的 push 和 pop 操作

    幾種方法 empty()

     

    測試堆棧是否為空。

    E peek()

    查看棧頂對象而不移除它。

    E pop()

    移除棧頂對象并作為此函數的值返回該對象。

    E push(E item)

    把項壓入棧頂。

    int search(Object o)

    返回對象在棧中的位置,以 1 為基數。

    Arrays                           
    說明 專門用來操作數組的輔助類  Array  固定個數效率最高
    數據處理 Arrays中擁有一組static函數,
    equals():  比較兩個array是否相等。array擁有相同元素個數,

     

    且所有對應元素兩兩相等。
    fill():    將值填入array中。
    sort():    用來對array進行排序。
    binarySearch():在排好序的array中尋找元素。
    System.arraycopy():array的復制

    優勢 這個就是用來處理數組的,效率特別高

     

    如果之前對Arrays沒這么的重視,在J2SE 5.0之后,可以多關照它幾眼

    。如果有數組操作方面的相關需求,可以先查查 java.util.Arrays的API文

    件說明,看看有沒有現成的方法可以使用

     

    二、Set   :一個不包含重復元素的 collection。

    HashSet
    說明 內部使用HashMap 來存儲數據
    初始大小 16
    擴容因子 數據超過當前大小*0.75 容量擴一倍
    擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

     

    容量增加16 最后容量是 32。

    優勢 不允許有重復的元素
    線程是否安全 不安全,可以使用如下進行安全處理

     

    Set s = Collections.synchronizedSet(new HashSet(...))

     

    LinkedHashSet
    說明 內部使用HashMap 來存儲數據
    初始大小 16
    擴容因子 數據超過當前大小*0.75 容量擴一倍
    擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

     

    容量增加16 最后容量是 32。

    優勢 不允許有重復的元素 、 查詢足夠快 、 有序
    線程是否安全 不安全,可以使用如下進行安全處理

     

    Set s = Collections.synchronizedSet(new HashSet(...))

     

    三、Map  :一個不包含重復元素的 無序集合  鍵值對 。

     

    HashMap
    說明 內部使用Entity來存儲數據,key可以為空

     

    put方法:如果key為空,則替換換Key為空的值,

    否則插入到第 O 位置上。

    for (Entry<K,V> e = table[0]; e != null; e = e.next) {

    //null key都放在table[0]上

    if (e.key == null) {

    V oldValue = e.value;

    e.value = value;

    e.recordAccess(this);

    return oldValue;

    }

    }

    如果key不為空,先算出來key對象的hashcode ,

    然后調用函數 hash()在算一次,

    最后把結果和當前hash大小進行計算找到存放該值的位置;

    如果該位置有值 直接把當前值(entity)鏈接到該值最前面 ,

    Entry<K,V> e = table[bucketIndex];

    //這個地方獲取當前位置的 e

    //table[bucketIndex] = new Entry<K,V>(hash, key, value, e);

    //這個地方把要插入的entity的next屬性指向 e,

    然后把整個entity放入 hashMap的index位置,

    如果沒有值就直接放入,

    數組位置每變大一次  里面每個對象的位置都要重新計算一下

    初始大小 16
    擴容因子 數據超過當前大小*0.75 容量擴一倍
    擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

     

    容量增加16 最后容量是 32

    優勢 查詢足夠快
    線程是否安全 線程不安全  可以使用如下進行安全處理

     

    Set s = Collections.synchronizedSet(new HashSet(...))

     

     

    Hashtable
    初始大小 11
    擴容因子 大小 = 大小 * 2 + 1
    擴容例子 11 然后  23 然后47 ....
    是否同步 hashtable是同步的.
    優勢 查詢足夠快
    說明 key  不允許為空

     

    數據的put和get和hashMap基本上一致

    里面的所有方法除了不需要同步的都有 synchronized

     

     

    LinkedHashMap
    初始大小 16
    擴容因子 數據超過當前大小*0.75 容量擴一倍
    擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

     

    容量增加16 最后容量是 32

    是否同步 異步線程不安全 多線程使用可以如下

     

    Map m = Collections.synchronizedMap(new LinkedHashMap(...))
    優勢 查詢足夠快的  有序
    說明 鏈表的形式存儲數據 使用的hash算法保持數據,但同樣也維護了一個插入

     

    順序查詢對象時,速度足夠快

     

    TreeMap 
    初始大小 0
    擴容因子 1
    擴容例子 每插入一個鍵值對,內部創建一個entity來存儲    size + 1
    是否同步 異步線程不安全 多線程使用可以如下

     

    Map m = Collections.synchronizedMap(new TreeMap(...));
    優勢  能夠維護其內元素的排序狀態
    說明 TreeMap 初始化為0 , 每插入一個鍵值對,內部創建一個entity來存儲

     

    內部實現和維護的是一顆紅黑樹,遍歷的時候使用的是前序遍歷法,但是

    查詢get方法的時候需要遍歷,速度不如直接使用hash算法的快

     

     

    Properties
    初始大小 11
    擴容因子 大小 = 大小 * 2 + 1
    擴容例子 11 然后  23 然后47 ....
    是否同步 是同步的.
    優勢 查詢足夠快   可保存在流中或從流中加載數據
    說明 實現了 HashTable  表示了一個持久的屬性集。

     

    Properties 可保存在流中或從流中加載數據。

     

     

    posted on 2012-05-14 16:50 透明的魚 閱讀(294) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品久久久久婷婷软件 | 久久免费高清视频| 亚洲AV成人精品日韩一区18p| 亚洲乱理伦片在线观看中字| 成人毛片免费播放| 亚洲高清乱码午夜电影网| 午夜一区二区免费视频| 美女被免费网站在线视频免费| 精品免费久久久久久成人影院| AV激情亚洲男人的天堂国语| 亚洲Av无码乱码在线znlu| 一级毛片免费播放男男| 国产亚洲精aa成人网站| 日本一区二区免费看| 亚洲福利视频网址| 四虎影视免费在线| 色多多A级毛片免费看| 亚洲人成网77777亚洲色| 久久午夜免费鲁丝片| 亚洲男人天堂2018av| 免费在线观看理论片| 免费看黄的成人APP| 亚洲国产精品一区二区久| 日本免费网站在线观看| 一个人免费观看www视频| 亚洲综合无码一区二区| 无码永久免费AV网站| 无忧传媒视频免费观看入口| 亚洲国产精品一区第二页| 18禁免费无码无遮挡不卡网站| 婷婷亚洲综合一区二区| 亚洲AV无码久久精品狠狠爱浪潮| 我们的2018在线观看免费高清| 亚洲AⅤ男人的天堂在线观看| 亚洲精品国产成人片| 在线观看免费高清视频| 国产精品九九久久免费视频| 亚洲国产午夜精品理论片| 亚洲成网777777国产精品| 在线看免费观看AV深夜影院| 青青久久精品国产免费看|