版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、JavaSE-集合復(fù)習(xí)練習(xí)-唐 霞集合復(fù)習(xí)練習(xí)Java.util包中就包含了一系列重要的集合類,而對于集合類,主要需要掌握的就是它的內(nèi)部結(jié)構(gòu),以及遍歷集合的迭代模式。Java2的集合框架,抽其核心,主要有三種:List、Set和Map。集合復(fù)習(xí)練習(xí)List、Map、Set三個接口,存取元素時,各有什么特點List 以特定次序來持有元素,可有重復(fù)元素;Set 無法擁有重復(fù)元素,內(nèi)部排序(無序);Map 保存key-value值,value可多值。集合復(fù)習(xí)練習(xí)集合復(fù)習(xí)練習(xí)常用集合類特性的區(qū)別ArrayList: 元素單個,效率高,多用于查詢 LinkedList:元素單個,多用于插入和刪除 Vec
2、tor: 元素單個,線程安全,多用于查詢 HashMap: 元素成對,元素可為空 Hashtable: 元素成對,線程安全,元素不可為空集合復(fù)習(xí)練習(xí)Iterator是什么一些集合類提供了內(nèi)容遍歷的功能,通過java.util.Iterator接口。這些接口允許遍歷對象的集合。依次操作每個元素對象。當(dāng)使用Iterators時,在獲得Iterator的時候包含一個集合快照。通常在遍歷一個Iterator的時候不建議修改集合本身。集合復(fù)習(xí)練習(xí)Collection和Collections的區(qū)別Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集
3、合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作(Collections.sort())集合復(fù)習(xí)練習(xí)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 慢,因為它是同步的。集合復(fù)習(xí)練習(xí)ArrayList和Vector的區(qū)別ArrayList與Vector主要從二方面來說. 一.同步性: Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的。二.操作: 由于Vector支持多線程操作,所以在性能上就比不上ArrayList了。三.數(shù)據(jù)增長: ArrayList和Vector都有一個初始的容量大小,當(dāng)存儲進去它們里面的元素個數(shù)超出容量的時候,就需要增加ArrayList和Vector的存儲空間,每次增加存儲空間
5、的時候不是只增加一個存儲單元,是增加多個存儲單元。 Vector默認增加原來的一倍,ArrayList默認增加原來的0.5倍。 Vector可以由我們自己來設(shè)置增長的大小,ArrayList沒有提供相關(guān)的方法。 集合復(fù)習(xí)練習(xí)LinkedList與ArrayList有什么區(qū)別兩者都實現(xiàn)的是List接口,不同之處在于:(1)、ArrayList是基于動態(tài)數(shù)組實現(xiàn)的,LinkedList是基于鏈表的數(shù)據(jù)結(jié)構(gòu)。(2)、get訪問List內(nèi)部任意元素時,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)。 集合復(fù)習(xí)練習(xí)數(shù)組(Array)和列表集合(ArrayList)有什么區(qū)別下面列出了Array和ArrayList的不同點: Array可以包含基本類型和對象類型,ArrayList只能包含對象類型。 Array大小是固定的,ArrayL
7、ist的大小是動態(tài)變化的。 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator() 等等。 集合復(fù)習(xí)練習(xí)HashSet有以下特點:A. 無序(不能保證元素的排列順序,順序有可能發(fā)生變化)B. 不同步C. 允許空值(集合元素可以是null,可以放入多個null,但會自動覆蓋)當(dāng)向HashSet集合中存入一個元素時,HashSet會調(diào)用該對象的hashCode()方法來得到該對象的hashCode值,然后根據(jù) hashCode值來決定該對象在HashSet中存儲位置。簡單的說,HashSet集合判斷兩個元素相等的標準是兩個對象通過equals
8、方法比較相等,并且兩個對象的hashCode()方法返回值相 等。注意,如果要把一個對象放入HashSet中,重寫該對象對應(yīng)類的equals方法,也應(yīng)該重寫其hashCode()方法。其規(guī)則是如果兩個對象通過equals方法比較返回true時,其hashCode也應(yīng)該相同。另外,對象中用作equals比較標準的屬性,都應(yīng)該用來計算 hashCode的值。 集合復(fù)習(xí)練習(xí) TreeSet有以下特點:A. 有序 1. TreeSet是由一個樹形的結(jié)構(gòu)來實現(xiàn)的(數(shù)據(jù)結(jié)構(gòu)是二叉樹),它里面元素是有序的 2.TreeSet是SortedSet接口的唯一實現(xiàn)類,TreeSet可以確保集合元素處于排序狀 態(tài),
9、支持兩種排序方式,自然排序和定制排序。其中自然排序為 默認的排序方式;定制排序,TreeSet中的對象元素需要實Comparable 接口 TreeSet類中跟HashSet類一樣也沒有g(shù)et()方法來獲取列表中的元素,所以也只能通過迭代器方法來獲取二叉樹。 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();集合復(fù)習(xí)練習(xí)TreeSet有以下特點:
10、 B. 不允許空值 1. HashSet是通過HashMap實現(xiàn)的,TreeSet是通過TreeMap實現(xiàn)的,只不過Set用的只是Map的key 2. Map的key和Set都有一個共同的特性就是集合的唯一性.TreeMap更是多 了一個有序性. 3. TreeSet類中跟HashSet類一樣也沒有g(shù)et()方法來獲取列表中的元素,所以也只能通過迭代器方法來獲取 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();集合復(fù)習(xí)練習(xí)HashMap,LinkedMap,TreeMap的區(qū)別HashMap,LinkedHashMap,TreeMap都屬于Map。LinkedHashMap是HashMap的子類。Map 主要用于存儲鍵(key)值(value)對,根據(jù)鍵得到值,因此鍵不允許鍵重復(fù),但允許值重復(fù) 集合復(fù)習(xí)練習(xí) 1.HashMap的內(nèi)部結(jié)構(gòu)是一個數(shù)組,線性順序存儲,二次結(jié)構(gòu)使用線性的單鏈表。
12、HashMap是一個最常用的Map,它根據(jù)鍵的HashCode 值存儲數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為Null;HashMap不支持線程的同步,即任一 時刻可以有多個線程同時寫HashMap;可能會導(dǎo)致數(shù)據(jù)的不一致2.LinkedHashMap是HashMap的子類。內(nèi)部結(jié)構(gòu)是一個數(shù)組,線性順序存儲,二次結(jié)構(gòu)使用線性的單鏈表,但同時內(nèi)部維護了一個雙向循環(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度惠州法務(wù)專員招聘及企業(yè)合規(guī)管理合同2篇
- 2024高速公路工程竣工驗收與交付合同2篇
- 2024葡萄酒代理合同協(xié)議書-葡萄酒品鑒會策劃與執(zhí)行合作3篇
- 2024年轎車指標短期租賃合同版B版
- 2024版小家電采購合同書范本
- 2025年度藥品生產(chǎn)監(jiān)理合同3篇
- 2024美發(fā)店與發(fā)型師個人2024年度合作合同
- 2024版房產(chǎn)贈與合同離婚協(xié)議書
- 2025年度科技項目研發(fā)與轉(zhuǎn)讓合同2篇
- 2024年鋼材工藝品購銷中介合同
- 藝術(shù)漆培訓(xùn)課件
- 建德海螺二期施工組織設(shè)計
- 山東省菏澤市2023-2024學(xué)年高一上學(xué)期期末測試物理試題(解析版)
- 2024年學(xué)校后勤日用品采購合同范本2篇
- 中建中建機電工程聯(lián)動調(diào)試實施方案范本
- 新《安全生產(chǎn)法》安全培訓(xùn)
- 上海教育出版社 藝術(shù) 八年級上冊第三單元 鄉(xiāng)音鄉(xiāng)韻 京腔京韻系鄉(xiāng)情 教學(xué)設(shè)計
- 人教版(2024新教材)七年級上冊數(shù)學(xué)第一章《有理數(shù)》單元測試卷(含答案)
- 商業(yè)倫理與企業(yè)社會責(zé)任(山東財經(jīng)大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年山東財經(jīng)大學(xué)
- (正式版)QBT 8006-2024 年糕 標準
- 重慶市永川區(qū)城鄉(xiāng)總體規(guī)劃
評論
0/150
提交評論