




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rè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三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)List 以特定次序來持有元素,可有重復(fù)元素;Set 無法擁有重復(fù)元素,內(nèi)部排序(無序);Map 保存key-value值,value可多值。集合復(fù)習(xí)練習(xí)集合復(fù)習(xí)練習(xí)常用集合類特性的區(qū)別ArrayList: 元素單個(gè),效率高,多用于查詢 LinkedList:元素單個(gè),多用于插入和刪除 Vec
2、tor: 元素單個(gè),線程安全,多用于查詢 HashMap: 元素成對,元素可為空 Hashtable: 元素成對,線程安全,元素不可為空集合復(fù)習(xí)練習(xí)Iterator是什么一些集合類提供了內(nèi)容遍歷的功能,通過java.util.Iterator接口。這些接口允許遍歷對象的集合。依次操作每個(gè)元素對象。當(dāng)使用Iterators時(shí),在獲得Iterator的時(shí)候包含一個(gè)集合快照。通常在遍歷一個(gè)Iterator的時(shí)候不建議修改集合本身。集合復(fù)習(xí)練習(xí)Collection和Collections的區(qū)別Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.Collections是針對集
3、合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對各種集合的搜索、排序、線程安全化等操作(Collections.sort())集合復(fù)習(xí)練習(xí)HashMap和Hashtable的區(qū)別都屬于Map接口的類,實(shí)現(xiàn)了將惟一鍵映射到特定的值上。 一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn) 二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的 三.值: HashMap 類沒有分類或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。 Hashtable 類似于 HashM
4、ap,但是不允許 null 鍵和 null 值。四.效率:Hashtable 比 HashMap 慢,因?yàn)樗峭降?。集合?fù)習(xí)練習(xí)ArrayList和Vector的區(qū)別ArrayList與Vector主要從二方面來說. 一.同步性: Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的。二.操作: 由于Vector支持多線程操作,所以在性能上就比不上ArrayList了。三.數(shù)據(jù)增長: ArrayList和Vector都有一個(gè)初始的容量大小,當(dāng)存儲進(jìn)去它們里面的元素個(gè)數(shù)超出容量的時(shí)候,就需要增加ArrayList和Vector的存儲空間,每次增加存儲空間
5、的時(shí)候不是只增加一個(gè)存儲單元,是增加多個(gè)存儲單元。 Vector默認(rèn)增加原來的一倍,ArrayList默認(rèn)增加原來的0.5倍。 Vector可以由我們自己來設(shè)置增長的大小,ArrayList沒有提供相關(guān)的方法。 集合復(fù)習(xí)練習(xí)LinkedList與ArrayList有什么區(qū)別兩者都實(shí)現(xiàn)的是List接口,不同之處在于:(1)、ArrayList是基于動態(tài)數(shù)組實(shí)現(xiàn)的,LinkedList是基于鏈表的數(shù)據(jù)結(jié)構(gòu)。(2)、get訪問List內(nèi)部任意元素時(shí),ArrayList的性能要比LinkedList性能好。LinkedList中的get方法是要按照順序從列表的一端開始檢查,直到另一端(3)、對于新增和
6、刪除操作LinkedList要強(qiáng)于ArrayList,因?yàn)锳rrayList要移動數(shù)據(jù)附加: LinkedList實(shí)現(xiàn)了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊(duì)列(queue)或雙向隊(duì)列(deque)。 集合復(fù)習(xí)練習(xí)數(shù)組(Array)和列表集合(ArrayList)有什么區(qū)別下面列出了Array和ArrayList的不同點(diǎn): Array可以包含基本類型和對象類型,ArrayList只能包含對象類型。 Array大小是固定的,ArrayL
7、ist的大小是動態(tài)變化的。 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator() 等等。 集合復(fù)習(xí)練習(xí)HashSet有以下特點(diǎn):A. 無序(不能保證元素的排列順序,順序有可能發(fā)生變化)B. 不同步C. 允許空值(集合元素可以是null,可以放入多個(gè)null,但會自動覆蓋)當(dāng)向HashSet集合中存入一個(gè)元素時(shí),HashSet會調(diào)用該對象的hashCode()方法來得到該對象的hashCode值,然后根據(jù) hashCode值來決定該對象在HashSet中存儲位置。簡單的說,HashSet集合判斷兩個(gè)元素相等的標(biāo)準(zhǔn)是兩個(gè)對象通過equals
8、方法比較相等,并且兩個(gè)對象的hashCode()方法返回值相 等。注意,如果要把一個(gè)對象放入HashSet中,重寫該對象對應(yīng)類的equals方法,也應(yīng)該重寫其hashCode()方法。其規(guī)則是如果兩個(gè)對象通過equals方法比較返回true時(shí),其hashCode也應(yīng)該相同。另外,對象中用作equals比較標(biāo)準(zhǔn)的屬性,都應(yīng)該用來計(jì)算 hashCode的值。 集合復(fù)習(xí)練習(xí) TreeSet有以下特點(diǎn):A. 有序 1. TreeSet是由一個(gè)樹形的結(jié)構(gòu)來實(shí)現(xiàn)的(數(shù)據(jù)結(jié)構(gòu)是二叉樹),它里面元素是有序的 2.TreeSet是SortedSet接口的唯一實(shí)現(xiàn)類,TreeSet可以確保集合元素處于排序狀 態(tài),
9、支持兩種排序方式,自然排序和定制排序。其中自然排序?yàn)?默認(rèn)的排序方式;定制排序,TreeSet中的對象元素需要實(shí)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有以下特點(diǎn):
10、 B. 不允許空值 1. HashSet是通過HashMap實(shí)現(xiàn)的,TreeSet是通過TreeMap實(shí)現(xiàn)的,只不過Set用的只是Map的key 2. Map的key和Set都有一個(gè)共同的特性就是集合的唯一性.TreeMap更是多 了一個(gè)有序性. 3. TreeSet類中跟HashSet類一樣也沒有g(shù)et()方法來獲取列表中的元素,所以也只能通過迭代器方法來獲取 4. HashSet是基于hash算法實(shí)現(xiàn)的,性能優(yōu)于TreeSet,通常使用HashSet。在我們需要對其中元素排序的時(shí)候才使用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)是一個(gè)數(shù)組,線性順序存儲,二次結(jié)構(gòu)使用線性的單鏈表。
12、HashMap是一個(gè)最常用的Map,它根據(jù)鍵的HashCode 值存儲數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為Null;HashMap不支持線程的同步,即任一 時(shí)刻可以有多個(gè)線程同時(shí)寫HashMap;可能會導(dǎo)致數(shù)據(jù)的不一致2.LinkedHashMap是HashMap的子類。內(nèi)部結(jié)構(gòu)是一個(gè)數(shù)組,線性順序存儲,二次結(jié)構(gòu)使用線性的單鏈表,但同時(shí)內(nèi)部維護(hù)了一個(gè)雙向循環(huán)鏈表,可以保持順序。存取性能較HashMap差些,但相差不大。header.after為尾方向,header.before為首方向。迭代遍歷時(shí)entrySet().iterator()跟HashMap一樣(有點(diǎn)困惑,為什么不按線性順序進(jìn)行迭代,只能重寫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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國食品級磷酸鹽行業(yè)投資規(guī)劃及發(fā)展前景研究報(bào)告
- 2025-2030年中國雕塑工藝品行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國金屬酸洗行業(yè)發(fā)展趨勢及前景調(diào)研分析報(bào)告
- 2025-2030年中國辣椒紅色素市場運(yùn)行態(tài)勢及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國訓(xùn)練健身器材制造行業(yè)運(yùn)營狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025年河北建筑安全員考試題庫
- 2025-2030年中國花露水運(yùn)行趨勢及發(fā)展前景分析報(bào)告
- 2025-2030年中國磷酸二氫鉀行業(yè)運(yùn)營狀況及發(fā)展趨勢分析報(bào)告
- 2025-2030年中國男士香水行業(yè)運(yùn)營狀況及投資策略研究報(bào)告
- 唐山職業(yè)技術(shù)學(xué)院《國際人才管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025人教版一年級下冊數(shù)學(xué)教學(xué)進(jìn)度表
- 休學(xué)復(fù)學(xué)申請書
- 2025年四川司法警官職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 新建污水處理廠工程EPC總承包投標(biāo)方案(技術(shù)標(biāo))
- 山東省德州市2024-2025學(xué)年高三上學(xué)期1月期末生物試題(有答案)
- 本人報(bào)廢車輛委托書
- 雙減政策與五項(xiàng)管理解讀
- 2025年道德與法治小學(xué)六年級下冊教學(xué)計(jì)劃(含進(jìn)度表)
- 過橋資金操作流程
- 貨物學(xué) 課件1.2貨物的特性
- 《略陽名勝古跡》課件
評論
0/150
提交評論