黑馬程序員java培訓(xùn)就業(yè)班筆記集合體系地的總結(jié)_第1頁(yè)
黑馬程序員java培訓(xùn)就業(yè)班筆記集合體系地的總結(jié)_第2頁(yè)
黑馬程序員java培訓(xùn)就業(yè)班筆記集合體系地的總結(jié)_第3頁(yè)
黑馬程序員java培訓(xùn)就業(yè)班筆記集合體系地的總結(jié)_第4頁(yè)
黑馬程序員java培訓(xùn)就業(yè)班筆記集合體系地的總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)用標(biāo)準(zhǔn)文案1、Collection :集合框架的由來(lái):因?yàn)槊總€(gè)容器對(duì)象的自身的數(shù)據(jù)結(jié)構(gòu)不同,所以對(duì)它們進(jìn)行單獨(dú)的描述和對(duì)象封裝,并不斷的向上抽取共性內(nèi)容,這樣變形成了集合框架。定義:集合就是一個(gè)容器、用來(lái)存儲(chǔ)對(duì)象、長(zhǎng)度可變。理解:其實(shí)班級(jí)就是一個(gè)容器,班上的每一個(gè)學(xué)生都是單獨(dú)封裝了功能的對(duì)象,因?yàn)榘嗉?jí)中的人數(shù)由于有人請(qǐng)假每天都再變化,所以長(zhǎng)度是可變的,常見(jiàn)方法:1、增加:add();增加一個(gè)元素addAll(); 增加一部分元素。2、刪除:Remove();刪除一個(gè)元素,會(huì)返回boolean類型,其實(shí)用到是 equals 方法,所以判斷是否有符合要求的元素。如果刪除成功會(huì)改變集合的長(zhǎng)度。下面同理。removeAll(); 刪除全部Clrea(); 清空容器總結(jié):在這里要尤其注意,面試題中經(jīng)??嫉?。3、判斷:Contains(); 是否包含,也就說(shuō)要所有的都包含在其中才算包含,否則不算包含。isEmpty(); 集合是否為空Size(); 集合長(zhǎng)度。4、?。簉etainAll(); 取交集。理解總結(jié):班級(jí)就是一個(gè)容器,班級(jí)中進(jìn)來(lái)一位新生就是 Add()添加一個(gè)元素,來(lái)了一堆同學(xué)就是addAll,班上出去一個(gè)學(xué)生就是remove刪除一個(gè),出去一部分就是removeAll刪除一部分,班級(jí)是不是有人,isEmpty,班上是否包含張三contains,班上有多少人size。班上是否包精彩文檔實(shí)用標(biāo)準(zhǔn)文案含隔壁班的同學(xué) retainAll. 去交集。集合使用細(xì)節(jié):1、直接存儲(chǔ)基本數(shù)據(jù)類型值也是可以的, 因?yàn)镴DK1.5后有自動(dòng)裝箱,會(huì)將基本數(shù)據(jù)類型轉(zhuǎn)成對(duì)象, JDK1.4絕對(duì)不行。Eg:coll.add(3)2、集合對(duì)象中存儲(chǔ)的其實(shí)是對(duì)象的元素的引用。3、Add的參數(shù)是 Object類型,可以接收所有的類型的對(duì)象,會(huì)出現(xiàn)向上轉(zhuǎn)型,取出元素時(shí)類型還是 Object 不能使用具體對(duì)象的特有內(nèi)容, 想要使用特有內(nèi)容向下轉(zhuǎn)型。Eg:Object obj="obj"; 想要取出訪問(wèn)子類的特有方法,向下轉(zhuǎn)型,Strings=(String)it.next();sop(s.length());|--List :有序列表(存取順序是一致的 )因?yàn)樵撟芋w系元素中有索引或角標(biāo), 可以存儲(chǔ)重復(fù)的元素。常用方法:添加:List.add(1,"abc7");//[abc1,abc7,abc2,abc3] 在角標(biāo)1位置往后順延。刪除Object obj=list.remove(2);// 刪除指定索引上的元素, 根據(jù)角標(biāo)刪除會(huì)返回來(lái)被刪對(duì)象Sop(obj);//obj :abc2[abc1,abc7,abc3]//獲取:獲取指定角標(biāo)上的元素并返回,這也是和 remove的區(qū)別。Objectobj=list.get(1);Sop(obj);//obj:abc1[abc1,abc7,abc3]獲取元素的索引,如果元素存在返回索引,不存在返回-1,依次還可以判斷元素是否存在。Intindex=list.indexOf("abc1");Sop(index);//index=1//獲取指定的子列表 sublist(fromIndex,toindex) 包含頭不包含尾List=list.sublist(1,2);//[abc1]修改:Objectobj=list.set(1,"haha");Sop(obj);//[abc1,haha,abc3]記?。褐挥?list 集合支持增刪改查。|--ArrayList :低層是數(shù)組數(shù)據(jù)結(jié)構(gòu),不同步,查詢快,增刪慢,|--LinkedList :低層是鏈表數(shù)據(jù)結(jié)構(gòu),不同步,查詢慢,增刪較快。|--Vector :低層是數(shù)組數(shù)據(jù)結(jié)構(gòu),同步,安全效率低,還有其特有方法枚舉。由于名稱過(guò)長(zhǎng)被 iterator 取代??偨Y(jié):掌握這些集合的方法,它們的方法和 list 集合的方法很相似,重點(diǎn)掌握各種集合的特點(diǎn),尤其是前兩個(gè)子類的低層數(shù)據(jù)結(jié)構(gòu)。|--Set無(wú)序、不能存儲(chǔ)重復(fù)的元素、方法個(gè) collection 集合的方法一致。精彩文檔實(shí)用標(biāo)準(zhǔn)文案|--HashSet低層是哈希表數(shù)據(jù)結(jié)構(gòu), 無(wú)序,能保證元素的唯一性, 是根據(jù)元素的兩個(gè)方法來(lái)保證元素的唯一性的, hasCode和equals 方法。只有當(dāng) hasCode算出的哈希值相同的情況下才去判斷 equals 方法是否為 true. 如果為真說(shuō)明兩個(gè)元素相同,不存儲(chǔ),所以往hashSet集合中存儲(chǔ)自定義對(duì)象時(shí)要覆寫(xiě) hasCode方法和equals方法,重點(diǎn)掌握上述保證唯一性的方法以及哈希表內(nèi)存原理實(shí)現(xiàn)。|--linkedHashSet以元素的插入順序來(lái)維護(hù)集合的連接表,允許以插入的順序的集合中迭代的怎么去理解?HashSet<String>hs=newHashSet<String>();hs.add("B");hs.add("A");hs.add("D");hs.add("E");hs.add("C");hs.add("F");System.out.println("HashSet:"+hs);LinkedHashSet<String>lhs=newLinkedHashSet<String>();lhs.add("B");lhs.add("A");lhs.add("D");lhs.add("E");lhs.add("C");lhs.add("F");System.out.println("LinkedHashSet:"+lhs);TreeSet<String>ts=newTreeSet<String>();ts.add("B");ts.add("A");ts.add("D");ts.add("E");ts.add("C");ts.add("F");System.out.println("TreeSet:"+ts);結(jié)果:HashSet:[D,E,F,A,B,C]LinkedHashSet:[B,A,D,E,C,F]TreeSet:[A,B,C,D,E,F]從結(jié)果可以知道對(duì)于LinkedHashSet集合可以保證元素按照添加的順序取出元素,而TreeSet集合可以對(duì)集合中的元素進(jìn)行自然排序。|--TreeSet精彩文檔實(shí)用標(biāo)準(zhǔn)文案用于給set集合中元素按照指定的順序進(jìn)行排序, 低層是二叉樹(shù)結(jié)構(gòu), 線程是不同步的,兩種排序方式:1、讓元素自身具備比較功能,就是強(qiáng)制讓元素去實(shí)現(xiàn)comparable接口,覆蓋compareTo方法。這時(shí)元素具備的自然排序。可是如果元素自身不具備比較的功能,獲取具備的比較功能不是所需要的。這時(shí)該排序方式就不能用了。2、讓集合自身具備比較功能,需要定義比較器,其實(shí)就是將實(shí)現(xiàn)了 Comparator接口的子類對(duì)象作為參數(shù)傳遞給 TreeSet集合的構(gòu)造函數(shù),讓treeSet 集合一創(chuàng)建就具備了比較功能。該子類必須要覆蓋 compare方法。掌握二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)的特點(diǎn):不明白?2、Map:特點(diǎn):1、它是集合框架中的頂層2、它存儲(chǔ)的是鍵值對(duì)。3、Map集合中必須保證鍵的唯一性。4、如果存儲(chǔ)鍵值對(duì)時(shí),鍵重復(fù),新值覆蓋舊值。其實(shí)存儲(chǔ)的就是一種映射關(guān)系。常見(jiàn)方法:增加:Put();putAll();刪除:Clrea();Remove(key);判斷:containKey();containValue();獲?。篻et(Objectkey);Size();Values();entrySet(); 將map集合中的映射關(guān)系map.Entry其實(shí)Entry也是一個(gè)接口,它是 map接口中的一個(gè)內(nèi)部接口。InterfaceMap{publicstaticinterfaceEntry{publicabstractObjectgetKey();publicabstractObjectgetValue();}}keySet(); 將map中所有的鍵都存入了 set集合,因?yàn)閟et具備迭代器,所以可以迭代方式取出所有的鍵,在根據(jù) get方法獲取每一個(gè)鍵對(duì)應(yīng)的值。Map集合的取出原理:將 map集合轉(zhuǎn)成set集合,在通過(guò)迭代器取出 .精彩文檔實(shí)用標(biāo)準(zhǔn)文案|--HashMap:低層是哈希表數(shù)據(jù)結(jié)構(gòu),該集合是不同步的,允許使用 null 鍵和null值。JDK1.2效率高|--LinkedHashMap:保證按照插入的順序進(jìn)行取出。|--TreeMap:低層是二叉樹(shù)數(shù)據(jù)結(jié)構(gòu),線程不同步,可以用于給Map集合中的鍵進(jìn)行排序。3、Iterator迭代器原理:其實(shí)就 collection 這個(gè)集合公共取出方式,因?yàn)槊總€(gè)容器的自身的數(shù)據(jù)結(jié)構(gòu)不同,它們的取出方式也是不同的, 要根據(jù)每個(gè)容器的特點(diǎn)來(lái)定義特定的取出方式, 而取出方式直接在訪問(wèn)容器中的元素, 所以將取出方式定義在容器的內(nèi)部, 是一個(gè)內(nèi)部類,而對(duì)外提供訪問(wèn)接口。這樣可以通過(guò)接口訪問(wèn)任何的 collection 容器中的元素,所以它的出現(xiàn)降低了耦合性,我們只用面對(duì) Iterator 接口,和使用接口就可以了。理解:抓布娃娃游戲機(jī)。|--ListIterator列表迭代器:要想在迭代過(guò)程中進(jìn)行增刪操作 Iterator 是不可以的,它只有刪除動(dòng)作,所以可以使用其子接口 listIterator, 是list 集合特有的取出方式,它包包含了增刪改查的方法。4、Collections 和Collection 的區(qū)別:(面試題)1、是一個(gè)集合接口。它提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法。Collection接口在Java類庫(kù)中有很多具體的實(shí)現(xiàn)。Collection接口的意義是為各種具體的集合提供了最大化的統(tǒng)一操作方式。CollectionList│├LinkedList│├ArrayList│└Vector│ └StackSet2、java.util.Collections是一個(gè)包裝類。它包含有各種有關(guān)集合操作的靜態(tài)多態(tài)方法。此類不能實(shí)例化,就像一個(gè)工具類,服務(wù)于Java的Collection框架。Java代碼1.importjava.util.ArrayList;2.importjava.util.Collections;3.importjava.util.List;4.5.publicclassTestCollections{6.7.publicstaticvoidmain(Stringargs[]){精彩文檔實(shí)用標(biāo)準(zhǔn)文案8.//注意List是實(shí)現(xiàn)Collection接口的9.Listlist=newArrayList();10.doublearray[]={1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論