Core Java學習筆記 集合

          Posted on 2010-05-12 17:03 eric_xu 閱讀(325) 評論(0)  編輯  收藏 所屬分類: Java
           

          Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.
          Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。

          Java類庫中用于集合類的基本接口是Collection接口。Collection接口擴展自Iterable接口,因此,可以在任何集合類中使用for each循環(huán)。

          publicinterface Iterable<T> {

              Iterator<T> iterator();

          }

          publicinterface Collection<E> extends Iterable<E>

          CollectionIterator是泛型接口,任何集合都可以使用其方法。Collection接口中的方法:

          public static <E> boolean contains(Collection<E> c, Object obj)

             for (E element : c)

                if (element.equals(obj))

                   return true;

             return false;

          }

          iterator方法返回一個實現(xiàn)了Iterator接口的對象。

          publicinterface Iterator<E> {

              boolean hasNext();

              E next();

              void remove();

          }

          Java集合類庫將接口與實現(xiàn)分離,Queue

          publicabstractclass AbstractCollection<E> implements Collection<E>

          一個集合類可以從AbstractCollection類擴展

          除了Map結尾的類,其他類都實現(xiàn)了Collection接口。

          ArrayList動態(tài)數(shù)組

          ArrayList的內(nèi)部實現(xiàn)是基于內(nèi)部數(shù)組Object[],所以從概念上講,它更像數(shù)組,但LinkedList的內(nèi)部實現(xiàn)是基于一組連接的記錄,所以,它更像一個鏈表結構。

          ArrayList的前面或中間插入數(shù)據(jù)時,必須將其后的所有數(shù)據(jù)相應的后移,這樣必然要花費較多時間,所以,當你的操作是在一列數(shù)據(jù)的后面添加數(shù)據(jù)而不是在前面或中間,并且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能;

          而訪問鏈表中的某個元素時,就必須從鏈表的一端開始沿著連接方向一個一個元素地去查找,直到找到所需的元素為止,所以,當你的操作是在一列數(shù)據(jù)的前面或中間添加或刪除數(shù)據(jù),并且按照順序訪問其中的元素時,就應該使用LinkedList了。

          如果在編程中,兩種情形交替出現(xiàn),這時,可以考慮使用List這樣的通用接口,而不用關心具體的實現(xiàn),在具體的情形下,它的性能由具體的實現(xiàn)來保證。

          Java中每個鏈表實際上是雙重鏈表。鏈表是有序的。List接口和實現(xiàn)了該接口的LinkedList類。

          interface ListIterator<E> extends Iterator<E>

          ListIterator中的add方法,添加元素在迭代器之前,remove方法刪除上一個被訪問的元素。Set方法取代使用nextprevious方法最后訪問的元素。

          ArrayList封裝了一個動態(tài)重新分配的數(shù)組。

          Vector類的所有方法都是同步的。可以用兩個線程安全地訪問Vector對象。代碼會在同步操作上浪費相當多的時間。ArrayList類的方法不是同步的。

          hashCode()方法必須和equals方法相兼容。如果a.equals(b)ture,ab必有相同的散列碼。散列嗎是通過對象實例字段產(chǎn)生的整數(shù)。

          TreeSet是一個有序集合,插入時可以是任意順序,輸出時為排序后的順序。紅黑樹。默認情況下,TreeSet假設你插入的元素實現(xiàn)了Comparable接口。

          publicinterface Comparable<T> {

              publicint compareTo(T o);

          }

          PriorityQueue是一種能夠在以任意順序插入元素后,再按排序順序讀取這些元素的數(shù)據(jù)結構。優(yōu)先級隊列和TreeSet一樣,其所持有的元素可以是實現(xiàn)了Comparable接口的類的對象,也可以是在構造器中提供的Comparator對象。

          HashMapTreeMap都實現(xiàn)了Map接口,映射表用于存放鍵/值對。

          HashSet類,實現(xiàn)了基于散列表的散列集。不存在重復元素的集合。

          散列映射表用于對鍵進行散列,樹狀映射表對于鍵的全局順序進行排序,并組成搜索樹。



           

          框架就是一個類集合,它形成了創(chuàng)建高級功能的基礎。框架包含許多超類,這些超類擁有非常有用的功能、策略和機制。框架用戶建立的子類可以擴展類的功能,而不是重新創(chuàng)建基本的機制。

          兩個用于集合的基本接口,CollectionMap

          Set接口和Collection接口,Set不允許有重復元素。List接口提供隨機訪問的方法,ArrayListLiknkedList的訪問算法效率是不同的。


          posts - 37, comments - 5, trackbacks - 0, articles - 0

          Copyright © eric_xu

          主站蜘蛛池模板: 阿巴嘎旗| 揭东县| 镇雄县| 孟州市| 社旗县| 砚山县| 台东市| 漯河市| 黄浦区| 华蓥市| 吉木萨尔县| 麻栗坡县| 卓资县| 福泉市| 吴旗县| 房产| 洪泽县| 松溪县| 武夷山市| 金山区| 潍坊市| 义乌市| 黑河市| 花莲市| 台北市| 罗源县| 黔南| 察隅县| 焦作市| 呼伦贝尔市| 南召县| 南开区| 武胜县| 英超| 长沙市| 乌兰县| 嵊州市| 中方县| 宁蒗| 文安县| 郸城县|