Picses' sky

          Picses' sky
          posts - 43, comments - 29, trackbacks - 0, articles - 24

          Java集合與數組[zz]

          Posted on 2007-07-18 14:49 Matthew Chen 閱讀(684) 評論(0)  編輯  收藏 所屬分類: Java SE

          Java集合與數組

          1.Java2提供了一 個完整的集合框架,而Java的早期版本只提供了一些集合類,如Hashtable和Vector,以及內建的數組功能。


          2.組成集合框架的類和接口是java.util包的成員,Arrays類提供了用于操作數組的static方法,Aarrys類的方法包括用于查找的binarySearch方法,用于比較數組的equals方法,用于給數組賦值的fill方法,以及排序的sort方法和asList方法。另外對Arrays類中的對象進行排序,對象必須實現Comparable接口的compareTo方法

          3.Size方法得到List中元素的個數,get得到List中取出第一個元素

          4.Collection接口是集合層次結構中的根接口,Set接口和List接口都是從Collection接口中派生出來的,Collection接口包含了在集合中添加,清除,比較和保持對象的大規模操作。Collection接口提供了iterator方法得到Iterator。

          5.Collections類提供了許多操作集合的static方法,其中許多方法實現用于查找和排序等愛貓撲.愛生活。

          6.List是一個能包含重復元素的已排序的Collection,有時候List也稱為序列,List接口由ArrayList類,LinkedList類和Vector實現的,ArrayList是List可變數組的實現,類似Vector類的行為和功能,LinkedList則是List的鏈表實現。

          7.iterator的hasNext方法卸螩ollection是否還含有另外一個元素,如果還有,則hasNext方法返回true,next方法返回Collection中的下一個對象并移動到下一個元素。
           
          8.subList得到List的一部分,這一部分被稱為子表,對子表的修改都會影響到List,clear方法從List中刪除元素,
           
          9.toArray方法以數組的形式返回集合中的內容。
           
          10.Comparator對象提供一種排序方式,可以按不同Colletion自然順序的順序對Collection的元素排序,reverseOrder方法返回一個Comparator對象,它代表了集合的逆轉排序。也可以實現你自己的排序方法,前提是實現Comparator接口,并實現Comparator接口的compare方法
           
          11.Shuffle算法對list中的元素進行隨機排序,binarySearch算法在List中查找一個Object
           
          12.Set是不包含重復元素的Collection,集合框架含有Set的兩種實現方式:HashSet和TreeSet,HashSet把他的元素存儲在哈希表中,而TreeSet則把他的元素存儲在樹中。
           
          13.SortedSet接口擴展了Set并按排好的順序維護了它的元素,TreeSet類實現了它。

          14.headSet方法得到TreeSet中小于一個指定元素的子集,對這一子集的修改都會反映在TreeSet中,tailSet方法得到大于或等于指定元素的子集,同樣對它的修改都會反映在TreeSet中。
           
          15.Map把鍵映射到值并不包含重復的鍵,Map和Set的不同之處在于Map包含鍵和值,而Set只包含鍵,HashMap和TreeMap類實現了Map接口,HashMap把他的元素存儲在哈希表中,而TreeMap則把他的元素存儲在樹中。
           
          16.SortedMap接口擴展了Map并按排好的順序維護了它的元素,TreeMap類實現了它。
           
          17.內建的集合都是異步的,多線程對Collection的并發訪問可能導致不確定的結果,為了防止這個問題,可以在被多線程訪問的類外面使用同步包裝類,Collections類提供了一系列的static方法把集合轉化成不可以修改的形式,當試圖修改時,拋出異常。
          Public static方法頭文件:(同步)
          Collection synchronizedCollection(Collection c);
          List  synchronizedList(List c)
          其他類似。。
           
          Public static方法頭文件:(不可以修改)
          Collection unmodifiableCollection(Collection c);
          List  unmodifiableList(List c)
          其他類似。。

          集合框架提供了不同的抽象實現,程序員可以利用此來實現自己定義的實現!


          18.數組和容器的區別主要有以下三點:效率,類型識別以及可以持有primitives

          19.容器類保持的類型都是Object的,主要有三種 list ,set, map,容器的缺點主要是保存元素的時候,丟失元素的類型,使用元素的時候,必須進行類型轉換

          20 list的選擇:
             ArrayList隨機訪問的效率要比LinkList快,但是LinkList順序訪問的效率則高過ArrayList,另外LinkList在對元素進行插入和刪除操作時要比ArrayList的效率高,二者的最佳選擇方法是:首先選用ArrayList當發現“向元素中插入和刪除操作太多時”引發性能問題時,換用LinkList,當然處理固定元素還是選用數組

          21.set的選擇:
             HashSet的各項性能都要比TreeSet強,但是TreeSet的意義在于能順序保存元素,因此只有在需要有順序set時才用TreeSet;
             LinkedHashSet的插入操作要比HashSet慢,主要是因為前者承擔了鏈表和hash容器的雙重代價,由于鏈表的緣故LinkedHashSet的遍歷則要比 HashSet快

          22.Map的選擇:
             HashMap的效率和HashTable差不多,一般來說HASHMAP要稍快,HASHMAP是用來取代HASHTABLE的,TREEMAP的效率要比HAHSMAP低,但是TREEMAP由于是樹結構,所以是有序的,因此不需要進行排序操作,如果不需要恒定有序的MAP時,一般來說首選HASHMAP,LINKEDHASHMAP比HASHMAP要慢,因為除了保存HASH容器外還有保存鏈表,IDENTITYHASHMAP沒有辦法和上敘MAP比較,它用的是==來比較兩個對象的相等性,而不是equals()


          23.所有hash類容器持有的對象必須覆蓋hashcode和equals方法

          主站蜘蛛池模板: 易门县| 石景山区| 榆中县| 温泉县| 苏州市| 凌源市| 育儿| 安阳县| 桦南县| 万山特区| 宿松县| 盈江县| 涿鹿县| 十堰市| 金川县| 台湾省| 青州市| 潮安县| 通道| 清丰县| 炎陵县| 绥阳县| 武胜县| 凤山市| 水城县| 利川市| 建昌县| 长海县| 霍林郭勒市| 胶南市| 海门市| 视频| 大悟县| 伊春市| 通海县| 桐城市| 盐池县| 于都县| 聂荣县| 合肥市| 新龙县|