




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 掌握如何使用操作HashMap集合的方法3、需求分析Map接II用于存儲具有對應關系的數(shù)據(jù)。它的每個元素都包含一個鍵對彖Key和值對彖Value,鍵和值對象之間存在映射。HashMap集合是Map接II的一個實現(xiàn)類。為了讓初學者能熟悉使用HasliNIap集合,本章將采用使用不同方法對HashMap集合進行操作,學習HashMap集合的使用方法。4、設計思路(實現(xiàn)原理)編寫類Examplel3,創(chuàng)建一個HashMap集合,并向集合中添加元素使用一系列方法分別對定義的集合進行增加、移除、判斷等操作運行程序,根據(jù)輸出結呆,分析這些方法對HashMap集合的操作二、案例實現(xiàn)編寫Example13類
2、,具體代碼如下:importjavautil*;publicclassExample13publiestaticvoidmain(Stringargs)/創(chuàng)建集合對象Mapmap=newHashMap();/添加元索map.put(Hczbk001,”林WrS);mapput(MczbkOOB1z林志玲);map.put(“CNbk002”,”林志穎;/添加元索,如果鍵存在,就普換,返回以前與key關聯(lián)的值。czbkOOS,”林志炫,);/Vremove(Objectkey):根據(jù)指定的鍵刪除鍵值對。remove:+mapremove(”czhk003);/判斷指定的鍵是否在集合中存在ncon
3、tainsKey:”+mapcontainsKey(匕k002);ncontainsKey:”+mapcontainsKey(匕k007);/判斷指定的值是否在集合中存在ncontainsValue:+mapcontainsValue(林志穎,);/判斷集合是否為空isEmpty:+mapisEmpty();/集合中元素的個數(shù)size:n+map/輸出集合對象名稱map:+map);運行結果如圖7-17所示。圖7J7運行結果三、案例總結在本案例中,從運行結果可以看出:1)集合中鍵為czbkOO3對應的值是”林志玲”。2)由于集合中存在鍵czbkOO3,所以程序做map.put(”czbkOO3
4、”,”林志炫”臊作時,值會替換為”林志炫”。所以刪除鍵為czbkOO3的對象時,程序輸出remove:”林志炫”。由此證實了Map中的鍵必須是唯一的,不能重復。如果存儲了相同的鍵,后存儲的值則會覆蓋原有的值,簡而言之就是,鍵相同,值覆蓋。3)”czbk002在集合中存在,所以輸出true。”czbk007”在集合中不存在,輸出false.4)值”林志穎”在集合中存在,所以輸出tine。)因為集合不為空,所以map.isEmptyO返回false案例7舁4遍歷Map中所有的鍵值一、案例描述1、考核知識點編號:00107014名稱:HashMap集合2、練習目標掌握遍歷Map中所有的鍵值兩種方法3
5、、需求分析在程序開發(fā)中,經(jīng)常需要取出Map中所有的鍵和值。為了讓人家熟悉遍歷Map中所有的鍵值,本案例將演示遍歷Map中所有的鍵值對的兩種遍歷方式。4、設計思路(實現(xiàn)原理)1)編寫類Example14,在該類中創(chuàng)建Map集合并向集合中添加元素2)使用第一種方式,遍歷集合元素,先獲取鍵的集合,再獲取鍵所對應的值3)使用第二種方式,先獲取集合中鍵值對映射關系,再從映射關系中獲得鍵和值二、案例實現(xiàn)importjavautil*;publicclassExample14publiestaticvoidmain(Springargs)/創(chuàng)建集合對象Mapmap=newHashMap();/添加元索map
6、.put(H001李世民J;map.put(ll002l朱元璋);map.put(“003”,武則天T;”方式一遍歷:/遍歷先獲取鍵的集合,再獲取鍵所對應的值Setkeyset=map.keyset();for(Objectkey:keyset)Objectvalue=mapget(key);+*+value);方式二遍歷:”);/遍歷2:先獲取集合中鍵值對映射關系,再從關系中獲得鍵和值SetMap.EntrymapSet=mapentrySeC();for(MapEntryme:mapSet)Objectkey=me.getKey();Objectvalue=me.getValue();+*
7、+value);運行結果如圖7-18所示。圖7-18運行結果三、案例總結1、在本案例中,第一種遍歷Map的方式是首先調用Map對彖的Keyset。方法,獲得存儲Map中所有鍵的Set集合,然后通過foreach循壞遍歷集合中的所有的鍵,最后通過調用get(key)方法,根據(jù)鍵獲取對應的值。2、本案例中的第二種遍歷Map的方式,首先調用Map對象的entrySet()方法獲得存儲Map中所有映射的Set集合,這個集合中存放了Map.Entry類型的元素(Entry是Map接II內部類),每個Map.Entry對象代表Map中的一個鍵值對,然后迭代Set集合,獲得每一個映射對彖,并分別調用映射對象
8、的getKeyQ和getValue。方法獲取鍵和值。3、在Map中,還提供了一個valuesQ方法,通過這個方法可以直接獲取Map中存儲所有值的Collection集合。獲取代碼如下:Collectionvalues=map.values();for(Objectvalue:values)r將此代碼替換案例中的兩種遍歷方法的代碼,運行結果如圖7-19所示。圖79運行結果案例7-15TreeMap集合的存取一、案例描述1、考核知識點編號:00107015名稱:TreeMap集合2、練習目標了解TreeMap集合的存儲特點掌握TreeMap集合存儲和迭代方法3、需求分析TreeMap集合用來存儲鍵
9、值映射關系,其中不允許出現(xiàn)重復的鍵。在TreeMap中是通過二叉樹的原理來保證鍵的唯一性,因此TreeMap中所有的鍵是按照某種順序排列的。為了熟悉TreeMap集合的使用,本案例將使用TreeMap集合獲取一個字符串中每一個字母出現(xiàn)的次數(shù),在實現(xiàn)這一功能的過程中掌握TreeMap集合存儲和迭代方法。4、設計思路(實現(xiàn)原理)1)編寫一個類Examplel5,要獲取字符串cbxzbvavdvgd1中,每一個字母出現(xiàn)次數(shù),先將字符串轉化成數(shù)組2)定義一個TreeMap集合,字符出現(xiàn)的次數(shù)作為鍵,每一個字符作為值3)遍歷字符數(shù)組,獲取到每一個字符4)拿到每一個字符,到TreeMap集合中找對應的值,
10、判斷返回值是否為NULL5)如果返回值是NULL,就將字符存儲到TreeMap集合中,對應的鍵記為16)如果返回值不為NULL,就將鍵值加1,并重新將值(字符)和鍵(出現(xiàn)的次數(shù))存入集合7)把TreeMap的元素拼接成一個字符串,輸出結果二、案例實現(xiàn)importjava.util*;publieclassExamplelSpublicstaticvoidmain(Stringargs)Strings=cbxzbvav&vgd;/把字符串變成字符數(shù)組。charchs=stoCharArray();/定義一個TreeMap集合TreeMaptm=newTreeMap();/遍歷字符數(shù)組,獲取到每一
11、個字符。for(charch:chs)/拿到該字符,到TreeMap集合中找對應的值Integeri=cm.get(ch);/根據(jù)返回值是否為null。繪:存儲,把次數(shù)記錄為1:否:把數(shù)據(jù)+,然后重寫存儲if(i=null)(put(ch,1);elsei+;put(chzi);/把TreeMap的數(shù)據(jù)拼接成一個字符串。StringBuildersb=newStringBuilder();Setser=tmkeyset();for(Characterch:set)Integeri=tm.get(ch);sbappend(ch)append(n)append(i)append(”);String
12、result=sbtoString();/運行結果如圖7-20所示。圖7-20運行結果三、案例總結1、在本案例中,演示了TreeMap集合中元素的存儲和迭代方法與HashMap相同。從輸出結果可以看出,TreeMap集合中的元素是不重復的,并且按照值的自然順序進行了排序。這是因為在TreeMap中是通過二叉樹的原理來保證鍵的唯一性,這個TreeSet集合存儲的原理一樣,因此TreeMap中所有的鍵是按照某種順序排列的。2、本案例中,在定義TreeMap集合時使用了泛型,即參數(shù)化類型。它可以指定該類中方法操作的數(shù)據(jù)類型,避免在集合存取時會產生的數(shù)據(jù)類型轉化的錯誤。案例7-16Proeprties
13、集合的功能案例描述1、考核知識點編號:00107016名稱:Proepmes集合2、練習目標掌握Pioepities集合的存儲和遍歷方法3、需求分析Map接II中還有一個實現(xiàn)類Hashtable,它和HasliNIap的區(qū)別是Hashtable是線程安全的。Hashtable類有一個子類Piopeities在實際應用中非常重要,Properties主要用來存儲字符串類型的鍵和值,為了掌握Properties集合的使用,本案例將演示Properties集合中元素的存儲,修改和遍歷。4、設計思路(實現(xiàn)原理)編寫一個類Example16,創(chuàng)建Pioepities集合對彖向Proeprties集合中添
14、加元素遍歷Pioepities集合中的元素二、案例實現(xiàn)importjavautil*;publicclassExample16publiestaticvoidmain(Stringargs)/創(chuàng)建集合對象Propertiesprop=newProperties();/添加元素prop.setProperty(11劉備”,”雙股劍”);prop.setProperty(H關羽J”青龍偃月刀”);propsetProperty(”張飛”.”丈丿1蛇矛”);Setset=propstzingPropertyNames();for(Stringkey:set)Stringvalue=propgetPr
15、operty(key);+value);運行結果如圖7-21所示。圖7-21運行結果三、案例總結Properties類中,針對字符串的存取提供了兩個專用的方法setPiop亡rty()和getPropeilv()osetPropeiTyQ方法用于將配置項的鍵和值添加到Piopenies集合當中。propertyNamesQ方法得到一個包含所有鍵的set對彖,然后在遍歷所有的鍵時,通過調用getPropertyO方法獲得鍵所對應的值。案例7舁7泛型的使用一、案例描述1、考核知識點編號:00107017名稱:泛型的使用2、練習目標了解為什么要使用泛型掌握泛型的使用方法3、需求分析集合可以存儲任何類
16、型的對彖,但是在程序中無法確定一個集合中的元素到底是什么類型的。那么在取出元素時,如果進行強制類型轉換就很容易出錯。為了解決這個問題,在Jaw中引入了“參數(shù)化類型(parameterizedtype)”這個概念,即泛型。本案例將使用泛型來限定集合元素的數(shù)據(jù)類型,從而方便初學者學習泛型的使用方法。4、設計思路(實現(xiàn)原理)編寫一個類Example17,創(chuàng)建AiravList集合對彖,并指定集合只能存儲Strmg類型的元素向集合中添加元素,其中有一個Integer類型的元素遍歷集合中的元素,觀察結果是否報錯二、案例實現(xiàn)importjavautil*;publicclassExample17publi
17、estaticvoidmain(Stringargs)/用ArrayList存儲字符串并遍歷ArrayLis*cS匸array=newArrayLisrS匸arrayadd(,hello);arrayadd(orld);arrayadd(java);array,add(newInteger(10);/添加一個Integer類型的數(shù)據(jù),此處報編譯異常Irerarorit=arrayiterator();while(ithasNe瓦匸()Strings=(String)i匸.next();r編譯程序發(fā)現(xiàn)報錯,如圖7-22所示。圖7-22編譯報錯錯誤顯示array中不能再存入除Strmg類型之外的數(shù)
18、據(jù)類型,將Integer類型數(shù)據(jù)刪掉,重新編譯運行程序,結果如圖7-23所示。圖7-23運行結果三、案例總結1、在定義集合類時,可以使用“參數(shù)化類型”的方式指定該類中方法操作的數(shù)據(jù)類型,具體格式如下:ArrayList參數(shù)化類型list=newArrayList();2、在本案例中,使用泛型規(guī)定了AiravList集合只能存入String類型元素。需要注意的是,在使用泛型后每次遍歷集合元素時,可以指定元素類型為Suing,而不是Object,這樣就避免了在程序中進行強制類型轉換。3、在程序中也可以自定義泛型,自定義泛型的具體代碼如下:classcachePool/在創(chuàng)建類時,聲明參數(shù)類型為TT
19、temp;publicvoidsave(Ttemp)/在創(chuàng)建save()方法時,指定參數(shù)類型為Tthis.temp=temp;publicTget()/在創(chuàng)建get()方法時,指定返回值類型為Treturntemp;在定義CachePool類時,聲明了參數(shù)類型為T,例如:在實例化對象時通過Integer將參數(shù)T指定為Integer類型,同時在調用save()方法時傳入的數(shù)據(jù)也是Integer類型,那么調用get()方法取出的數(shù)據(jù)自然就是Integer類型,這樣做的好處是不需要進行類型轉換。案例7-18Collections類對集合的操作-V案例描述1、考核知識點編號:00107019名稱:Co
20、llectionsV.具類2、練習目標掌握如何使用Collections類對集合進行操作3、需求分析在程序中,針對集合的操作非常頻繁,針對這些常見操作,JDK提供了一個工具類專門用來操作集合,這個類就是CoUectionso為了初學者能夠熟悉CoUections類中的方法,本案例將使用Collections類中的各種方法操作集合實現(xiàn)模擬斗地主發(fā)牌,來學習Collections類對集合操作的方法。4、設計思路(實現(xiàn)原理)編寫類ExamplelS,創(chuàng)建兩個Stimg類型數(shù)組,其中一個用于存儲牌的花色,一個用于存儲牌的數(shù)字創(chuàng)建一個AirayList集合作為牌盒,將人小王和不同花色不同數(shù)字的牌循環(huán)添加
21、到集合中用Collections工具類的shufile()方法洗牌創(chuàng)建三個AirayList集合作為三個人的牌的集合,并循環(huán)發(fā)牌,要留三張底牌打印出三個人的牌和集合中留的三張底牌二、案例實現(xiàn)importjavautil*;publicclassExample18TOC o 1-5 h zpubliestaticvoidmain(Stringargs)/表示花色的數(shù)組Stringcolors=”黑桃J”紅桃J”梅花”,“方塊”/表示點數(shù)的數(shù)組Stringnumbers=n2,zH3n4z57n8z”10”,y,yK;/找一個牌盒ArrayLisrarray=newArrayLis,c();arr
22、ay大王T;arrayadd(小王,J;/循環(huán)裝牌for(Stringc:colors)(for(Stringn:numbers)arrayadd(cconca匸(n);/洗牌Collectionsshuffle(array);/發(fā)牌ArrayLisrArrayLisrArrayLisr/用普通forlinString=newArrayList();ArrayLisrArrayLisrArrayLisr/用普通forfor(intx=0;xTOC o 1-5 h zarraysize()-3;x+)for(intx=0;xif(x%3=0)linSadd(arrayget(x);elseif(
23、x%3=1)zhouStringadd(arrayget(x);elseif(x%3=2)meStringadd(arrayget(x);/看牌linString:+linString);zhouString:n+zhouString);meString:n+meString);/看底牌”三張底牌:”);for(intx=arraysize()-3;x.運行結果如圖724所示。圖724運行結呆三、案例總結1、本案例中使用到了Collections工具類的shuffle()方法對List集合中的元素進行隨機排序(模擬玩撲克中的“洗牌”)o2、CollectionsX具類的其它方法,具體如表7H所
24、示。表7-4Collection類的相關方法方法聲明功能描述staticbooleanaddAll(Collectionc,T.elements)將所有指定元素添加到指定collection中staticvoidreverse(Listlist)反轉指定List集合中元素的順序staticvoidshuffle(Listlist)對List集合中的元素進行隨機排序(模擬玩撲克中的“洗牌”)staticvoidsort(Listlist)根據(jù)元素的自然順序對List集合中的元素進行排序staticvoidsvap(Listlist.iiitijntj)將指定List集合中1處元素和j處元素進行交
25、換staticintbinarySearch(Listlist,Objectkey)使用二分法搜索指定對象在List集合中的索引,查找的List集合中的元素必須是有序的staticObjectmax(Collectioncol)根據(jù)元素的自然順序,返回給定集合中最大的元素staticObjectmin(Collectioncol)根據(jù)元素的自然順序,返回給定集合中最小的元素staticbooleanreplaceAll(Listlist.ObjectoldVaLObjectnewVal)用一個新的newVal替換List集合中所有的舊值oldVhl案例7舁9Arrays類對數(shù)組的操作一、案例描述1、考核知識點編號:00107020名稱:Amiys工具類2、練習目標掌握如何使用Airays工具類對數(shù)
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 促進環(huán)保技術創(chuàng)新與綠色產業(yè)發(fā)展
- 綠色金融在推動可持續(xù)發(fā)展中的核心作用
- 小學道德與法治課堂評價體系的構建與實踐
- 數(shù)字檔案與數(shù)據(jù)管理技術在體育非遺保護中的實踐
- 2025年醫(yī)療大數(shù)據(jù)隱私保護技術合規(guī)應用的市場需求與競爭格局分析報告
- 2025年醫(yī)療AI輔助診斷產品注冊審批政策對醫(yī)療設備產業(yè)的促進報告
- 2025年休閑食品行業(yè)健康化轉型與共享零食市場拓展的商業(yè)模式報告
- 2025年休閑農業(yè)與鄉(xiāng)村旅游融合發(fā)展的旅游產業(yè)競爭力分析報告
- 企業(yè)內部培訓的數(shù)字化教育資源建設研究
- 以教育心理學為基礎的在線學習環(huán)境構建
- 梨的貯藏特性及保鮮技術
- 2024年人參相關項目實施方案
- 2024年安徽淮河能源控股集團有限責任公司招聘筆試參考題庫含答案解析
- 混合痔術后護理查房
- 建筑材料采購投標方案(技術標)
- 挪用資金案諒解書
- 機械連接預應力混凝土異型樁L19ZG403
- 港口碼頭考核管理制度
- 飛機儀電與飛控系統(tǒng)原理智慧樹知到課后章節(jié)答案2023年下中國人民解放軍海軍航空大學
- 中醫(yī)刮痧課件
- 長沙理工大學隧道工程與橋梁課程設計
評論
0/150
提交評論