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

下載本文檔

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

文檔簡介

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

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論