java集合框架講解

java集合框架

一、java集合框架概述

java集合類從1.0開始不斷完善,其中使用了豐富的數據結構(數組,隊列,棧,鏈表,二叉樹,哈希表等),主要有list,set,map三大接口及其子類實現,爲我們提供了豐富的適應於不同場景的工具類。
在實際的開發中我們會遇到很多種需求場景,只有充分理解java集合框架下面的類的特點,具體場景需要使用什麼集合類纔會遊刃有餘。
                                          

二、List集合

     list集合有一些共性方法增刪改查。
     集合的遍歷有iterator和listiterator方法。其中後者是前者的子接口。
    在使用iterator迭代時,不可以通過結合對象的方法操作集合中的元素,否則會發生concurrentModificationException異常。在迭代時只能使用迭代器的方法。
     iterator:判斷、取出、刪除
     listiterator: 添加、修改、判斷、取出、刪除。

Collection:
  ---- List:元素是有序的,元素可以重複,因爲該集合有索引。判斷元素是否相同用equals()方法.
            -----ArrayList(動態數組):數據結構爲數組,查詢速度快,增刪慢,線程不同步。
默認有10個元素,擴大50%的增加。
            -----LinkedList(鏈表、隊列、堆棧):數據結構爲鏈表,查詢速度慢,增刪快。
                                   特有方法:1)、addFirst(),addLast(), 
                                                     2)、getFirst(),getLast(),獲取元素但是不刪除.果集合中沒有元素,會產生
                                                     NoSuchElementException。
                                                     3)、 removeFirst(),removeLast(),獲取元素並刪除,如果集合中沒有元素,會產生
                                                     NoSuchElementException。
                                    jdk1.6替代方法:offerFirst(),offerLast()
                                                                peekFirst(),peekLast()獲取元素不刪除。如果集合中沒有元素,會返回null.
                                                                pollFirst(),pollLast().獲取元素並刪除。如果集合中沒有元素,會返回null.
                                                     

            -----Vector:數據結構爲數組,線程同步,被ArrayList替代。(特有枚舉(名字過長)、addElement等)
容量需要擴大時,成倍增加.
  ---- Set:元素是無序的,元素不可以重複。存入和取出時的順序不一定一致。(set底層使用了Map集合)
                   -----HashSet:數據結構是哈希表,線程不同步。
                                  通過hashCode()和equals()方法判斷元素是否相同和刪除操作.
                                   如果元素的HashCode相同,會繼續判斷equals是否爲true。如果元素的HashCode值不同,不 會調用equals方法.
           -----TreeSet:數據結構是二叉樹,可以對集合中的元素進行排序。
                                  通過compareTo()方法判斷元素唯一性,compareTo方法返回0.
                                  排序方法:1)元素自身實現comparable接口,或者實現一個comparator構造器。
                                   2)當comparable和comparator都存在時,以comparator爲主。

三、Map集合:該集合存儲鍵值對,必須保證鍵的唯一性。
                1.添加2.刪除clear,3.判斷containsValue,containsKey,isEmpty4.獲取get,size,values,entrySet,keySet.
                 添加元素如果出現相同的鍵,返回原來的值,並覆蓋。
Map集合兩種取出方式:
                 1):keySet 將集合中的key取出。
 2)entrySet。Set<Map.Entry<K,V>>將Map集合中的映射關係存入到set集合中。
-----HashTable:數據結構是哈希表,不可以存入null鍵和null值。線程同步。(被HashMap替代)
  -----HashMap:數據結構是哈希表,可以存入null鍵和null值,線程不同步。
                         通過hashCode和equals方法判斷相同
  -----HashSet:數據結構是二叉樹,不同步,可以給鍵排序。
通過conparable和comparator比較。

四、線程安全類
在集合框架彙總,有些類是線程安全的,這些都是在JDK1.1中出現的。JDK1.2之後,出現了很多非線程安全類
  -------Vector:比ArrayList多了線程安全
-------Stack:堆棧   
-------HashTable:比HashMap多了線程安全
-------Enumeration:枚舉,相當於迭代器。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章