JavaSE-集合復習練習_第1頁
JavaSE-集合復習練習_第2頁
JavaSE-集合復習練習_第3頁
JavaSE-集合復習練習_第4頁
JavaSE-集合復習練習_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、JavaSE-集合復習練習-唐 霞集合復習練習Java.util包中就包含了一系列重要的集合類,而對于集合類,主要需要掌握的就是它的內部結構,以及遍歷集合的迭代模式。Java2的集合框架,抽其核心,主要有三種:List、Set和Map。集合復習練習List、Map、Set三個接口,存取元素時,各有什么特點List 以特定次序來持有元素,可有重復元素;Set 無法擁有重復元素,內部排序(無序);Map 保存key-value值,value可多值。集合復習練習集合復習練習常用集合類特性的區(qū)別ArrayList: 元素單個,效率高,多用于查詢 LinkedList:元素單個,多用于插入和刪除 Vec

2、tor: 元素單個,線程安全,多用于查詢 HashMap: 元素成對,元素可為空 Hashtable: 元素成對,線程安全,元素不可為空集合復習練習Iterator是什么一些集合類提供了內容遍歷的功能,通過java.util.Iterator接口。這些接口允許遍歷對象的集合。依次操作每個元素對象。當使用Iterators時,在獲得Iterator的時候包含一個集合快照。通常在遍歷一個Iterator的時候不建議修改集合本身。集合復習練習Collection和Collections的區(qū)別Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集

3、合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作(Collections.sort())集合復習練習HashMap和Hashtable的區(qū)別都屬于Map接口的類,實現(xiàn)了將惟一鍵映射到特定的值上。 一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現(xiàn) 二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的 三.值: HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。 Hashtable 類似于 HashM

4、ap,但是不允許 null 鍵和 null 值。四.效率:Hashtable 比 HashMap 慢,因為它是同步的。集合復習練習ArrayList和Vector的區(qū)別ArrayList與Vector主要從二方面來說. 一.同步性: Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的。二.操作: 由于Vector支持多線程操作,所以在性能上就比不上ArrayList了。三.數(shù)據(jù)增長: ArrayList和Vector都有一個初始的容量大小,當存儲進去它們里面的元素個數(shù)超出容量的時候,就需要增加ArrayList和Vector的存儲空間,每次增加存儲空間

5、的時候不是只增加一個存儲單元,是增加多個存儲單元。 Vector默認增加原來的一倍,ArrayList默認增加原來的0.5倍。 Vector可以由我們自己來設置增長的大小,ArrayList沒有提供相關的方法。 集合復習練習LinkedList與ArrayList有什么區(qū)別兩者都實現(xiàn)的是List接口,不同之處在于:(1)、ArrayList是基于動態(tài)數(shù)組實現(xiàn)的,LinkedList是基于鏈表的數(shù)據(jù)結構。(2)、get訪問List內部任意元素時,ArrayList的性能要比LinkedList性能好。LinkedList中的get方法是要按照順序從列表的一端開始檢查,直到另一端(3)、對于新增和

6、刪除操作LinkedList要強于ArrayList,因為ArrayList要移動數(shù)據(jù)附加: LinkedList實現(xiàn)了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊列(queue)或雙向隊列(deque)。 集合復習練習數(shù)組(Array)和列表集合(ArrayList)有什么區(qū)別下面列出了Array和ArrayList的不同點: Array可以包含基本類型和對象類型,ArrayList只能包含對象類型。 Array大小是固定的,ArrayL

7、ist的大小是動態(tài)變化的。 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator() 等等。 集合復習練習HashSet有以下特點:A. 無序(不能保證元素的排列順序,順序有可能發(fā)生變化)B. 不同步C. 允許空值(集合元素可以是null,可以放入多個null,但會自動覆蓋)當向HashSet集合中存入一個元素時,HashSet會調用該對象的hashCode()方法來得到該對象的hashCode值,然后根據(jù) hashCode值來決定該對象在HashSet中存儲位置。簡單的說,HashSet集合判斷兩個元素相等的標準是兩個對象通過equals

8、方法比較相等,并且兩個對象的hashCode()方法返回值相 等。注意,如果要把一個對象放入HashSet中,重寫該對象對應類的equals方法,也應該重寫其hashCode()方法。其規(guī)則是如果兩個對象通過equals方法比較返回true時,其hashCode也應該相同。另外,對象中用作equals比較標準的屬性,都應該用來計算 hashCode的值。 集合復習練習 TreeSet有以下特點:A. 有序 1. TreeSet是由一個樹形的結構來實現(xiàn)的(數(shù)據(jù)結構是二叉樹),它里面元素是有序的 2.TreeSet是SortedSet接口的唯一實現(xiàn)類,TreeSet可以確保集合元素處于排序狀 態(tài),

9、支持兩種排序方式,自然排序和定制排序。其中自然排序為 默認的排序方式;定制排序,TreeSet中的對象元素需要實Comparable 接口 TreeSet類中跟HashSet類一樣也沒有get()方法來獲取列表中的元素,所以也只能通過迭代器方法來獲取二叉樹。 HashSet set=new HashSet();set.add(1);set.add(2);set.add(3);Iterator iterator=set.iterator();while(iterator.hasNext()System.out.println(iterator.next();集合復習練習TreeSet有以下特點:

10、 B. 不允許空值 1. HashSet是通過HashMap實現(xiàn)的,TreeSet是通過TreeMap實現(xiàn)的,只不過Set用的只是Map的key 2. Map的key和Set都有一個共同的特性就是集合的唯一性.TreeMap更是多 了一個有序性. 3. TreeSet類中跟HashSet類一樣也沒有get()方法來獲取列表中的元素,所以也只能通過迭代器方法來獲取 4. HashSet是基于hash算法實現(xiàn)的,性能優(yōu)于TreeSet,通常使用HashSet。在我們需要對其中元素排序的時候才使用TreeSet。 TreeSet set=new TreeSet();set.add(1);set.ad

11、d(2);set.add(3);Iterator iterator=set.iterator();while(iterator.hasNext()System.out.println(iterator.next();集合復習練習HashMap,LinkedMap,TreeMap的區(qū)別HashMap,LinkedHashMap,TreeMap都屬于Map。LinkedHashMap是HashMap的子類。Map 主要用于存儲鍵(key)值(value)對,根據(jù)鍵得到值,因此鍵不允許鍵重復,但允許值重復 集合復習練習 1.HashMap的內部結構是一個數(shù)組,線性順序存儲,二次結構使用線性的單鏈表。

12、HashMap是一個最常用的Map,它根據(jù)鍵的HashCode 值存儲數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為Null;HashMap不支持線程的同步,即任一 時刻可以有多個線程同時寫HashMap;可能會導致數(shù)據(jù)的不一致2.LinkedHashMap是HashMap的子類。內部結構是一個數(shù)組,線性順序存儲,二次結構使用線性的單鏈表,但同時內部維護了一個雙向循環(huán)鏈表,可以保持順序。存取性能較HashMap差些,但相差不大。header.after為尾方向,header.before為首方向。迭代遍歷時entrySet().iterator()跟HashMap一樣(有點困惑,為什么不按線性順序進行迭代,只能重寫entrySet(),keySet()和values()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論