Core Java學習筆記 集合

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

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

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

          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方法返回一個實現了Iterator接口的對象。

          publicinterface Iterator<E> {

              boolean hasNext();

              E next();

              void remove();

          }

          Java集合類庫將接口與實現分離,Queue

          publicabstractclass AbstractCollection<E> implements Collection<E>

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

          除了Map結尾的類,其他類都實現了Collection接口。

          ArrayList動態數組

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

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

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

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

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

          interface ListIterator<E> extends Iterator<E>

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

          ArrayList封裝了一個動態重新分配的數組。

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

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

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

          publicinterface Comparable<T> {

              publicint compareTo(T o);

          }

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

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

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

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



           

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

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

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


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

          Copyright © eric_xu

          主站蜘蛛池模板: 陆丰市| 拉萨市| 安乡县| 石泉县| 泸定县| 闽清县| 湘阴县| 宾川县| 平谷区| 建瓯市| 石首市| 独山县| 班玛县| 汉阴县| 德昌县| 鹤山市| 汶川县| 彭泽县| 涞水县| 合水县| 理塘县| 延吉市| 玉龙| 通州区| 永仁县| 渑池县| 汽车| 山东省| 北京市| 太和县| 从江县| 读书| 五莲县| 文山县| 资讯 | 宜宾市| 邓州市| 无极县| 营口市| 义马市| 临潭县|