java集合框架複習

數組類Array是java中最基本的一個存儲結構,它用於存儲java

一組連續的對象或一組類型相同的基本類型的數據。 算法

 Array特色:效率高,但容量固定且沒法動態改變,數組

                缺點:沒法判斷其中存有多少元素,length只是告訴咱們Array的容量.多線程

 Arrays類: 專門用來操做Array,提供搜索,排序,複製等框架

靜態方法. 性能

Arrays中equals():比較兩個Array是否相等,Array擁有相同元素個數,且全部對應元素兩兩相等.spa

            fill():將值填入Array中.線程

            sort():用來對Array進行排序.對象

            binarySearch():在排好序的Array中尋找元素.排序

            System.arraycopy():Array的複製. 

  Vector:基於Array的List,性能也就不可能超越Array,而且Vector

是「sychronizend」的,這個也是Vector和ArrayList的惟一區別.

 ArrayList:同Vector同樣是一個基於Array的,但不一樣的是ArrayList

不是同步的.因此在性能上要比Vector優越一些,可是運行到多線程環境

中時,須要本身管理線程的同步問題.從其命名中能夠看出它是一種相似數組的形式進行存儲,所以它的隨機訪問速度特快

 LinkedList:LinkedList不一樣於前面兩種List,它不是基於Array的.

 由於是基於鏈表實現的,data,(節點自己數據)nextNode(下一個節點)

因此更適用於 插入,刪除操做.

 【注意全部的List能夠有null元素,元素能夠重複】

  移除List重複元素:

       方法一:經過HashSet剔除 (本人喜歡使用的方式:使用的是hash數組不能產生重複數據的特性,來轉換LIST)

//  刪除ArrayList中重複元素 
    HashSet hSet  =   new  HashSet(list);
    list.clear();
    list.addAll(hSet);
    System.out.println(list); 
         方法二: 刪除ArrayList中重複元素,保持順序 
   // 刪除ArrayList中重複元素,保持順序 
 public   static   void  removeDuplicateWithOrder(List list)   {
      Set set  =   new  HashSet();
      List newList  =   new  ArrayList();
   for  (Iterator iter  =  list.iterator(); iter.hasNext();)   {
         Object element  =  iter.next();
         if  (set.add(element))
            newList.add(element);
     } 
     list.clear();
     list.addAll(newList);
     System.out.println( " remove duplicate "   +  list);

 }   

 HashSet:set同list同樣都實現了Collection接口,可是他們的實現方式卻大不同. 【list是以Array爲基礎的,而Set則是HashMap的基礎上實現的】

 HashSet的存儲方式是把HashMap中的Key做爲Set的 對應存儲項,這也是爲何在Set中不能像在List中同樣有重複的項的根本緣由,由於HashMap的key是不能有重複的。HashSet能快速定位 一個元素,可是放到HashSet中的對象須要實現hashCode()方法0。

  TreeSet:Treeset將放入其中的元素按序存放,這就要求你放入其中的

對象時可排序的,這就用到了集合框架提供的另外兩個實用類

Comparable和Comparator。 

 【一個類是可排序的,它就應該實現Comparable接口.】

 【有時多個類具備相同的排序算法,那就不須要重複定義相同的排序算法,只要實現Comparator接口便可】

TreeSet是SortedSet的子類,它不一樣於HashSet的根本就是TreeSet

是有序的,它是經過SortedMap來實現的.

 HashMap:也用到了哈希碼的算法,以便快速查找一個鍵,

TreemMap對鍵按序存放,所以它有一些擴展的方法,好比firstkey(),lastkey()等. 當多個線程訪問treemap時,要本身爲之提供外同步.

HashTable:不容許空鍵或值.Hashtable的方法是Synchronize的,

在多個線程訪問Hashtable時,不須要本身爲它的方法實現同步. 

 【Map有兩種比較經常使用的實現:HashTable.HashMap和TreeMap.】

相關文章
相關標籤/搜索