實(shí)用數(shù)據(jù)結(jié)構(gòu)第六講Map接口125_第1頁
實(shí)用數(shù)據(jù)結(jié)構(gòu)第六講Map接口125_第2頁
實(shí)用數(shù)據(jù)結(jié)構(gòu)第六講Map接口125_第3頁
實(shí)用數(shù)據(jù)結(jié)構(gòu)第六講Map接口125_第4頁
實(shí)用數(shù)據(jù)結(jié)構(gòu)第六講Map接口125_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五講第五講 Map接口及常用實(shí)現(xiàn)類接口及常用實(shí)現(xiàn)類2本講目標(biāo)本講目標(biāo)l接口:Map、SortedMapl類:HashMap、LinkedHashMap、TreeMap、HashtableMap接口接口l將鍵(Key)映射到值(Value)的對象。l一個映射不能包含重復(fù)的鍵(Key) ;l每個鍵最多只能映射到一個值。lMap看起來比較像由映射組成的Set。lMap接口不是 Collection 接口的繼承。Map接口接口l定義:鍵映射到值鍵最多只包含一鍵最多只包含一個個null,而值可,而值可以有多個以有多個nullKeyValuel特點(diǎn):鍵(Key)不允許重復(fù); 一個鍵(Key)只能映射到一

2、個值(Value)。Map接口中的集合接口中的集合lMap接口提供三種collection視圖,允許以鍵集、值集 或鍵-值映射關(guān)系集的形式查看某個映射的內(nèi)容。允許以三種方法將映射視作集合,這三種方法就是:keySet、values 和 entrySet: lkeySet是映射中包含的鍵集: Set keys=map.keySet()lvalues是映射中的值的集合:Collection values=map.values();lentrySet 是包含在映射中的鍵-值對的集:Set kvs=map.entrySet(); 內(nèi)容為Map.Entry的集合l所有通用的映射實(shí)現(xiàn)類應(yīng)該提供兩個“標(biāo)準(zhǔn)的

3、”構(gòu)造方法:l一個 void(無參數(shù))構(gòu)造方法,用于創(chuàng)建空映射;l一個是帶有單個 Map 類型參數(shù)的構(gòu)造方法,用于創(chuàng)建一個與其參數(shù)具有相同鍵-值映射關(guān)系的新映射。 Map接口接口l常用方法l常用實(shí)現(xiàn)類l常用子接口clear() ,containsKey(key),containsValue(value),entrySet(),keySet(),values(),get(key),put(key,value),putAll(map),remove(key),size(),isEmpty(),equals(o),hashCode()SortedMapHashMapLinkedHashMapTree

4、MapHashtablePropertiesHashMap類類l基于哈希表的Map接口實(shí)現(xiàn)l影響性能參數(shù)對對Key進(jìn)行散列(進(jìn)行散列(無序映射無序映射)初始容量初始容量加載因子加載因子迭代時間受迭代時間受容量容量和和映射大小映射大小的影響的影響Map接口和接口和HashMap類類l某培訓(xùn)中心學(xué)員應(yīng)聘至外企工作,每個學(xué)員都會有一個英文名稱,對應(yīng)該學(xué)員對象 Jack西苑中心畢業(yè)的李明西苑中心畢業(yè)的李明Rose西苑中心畢業(yè)的劉麗西苑中心畢業(yè)的劉麗現(xiàn)在希望通過英文名稱,獲得該學(xué)員對象的詳細(xì)信息,如現(xiàn)在希望通過英文名稱,獲得該學(xué)員對象的詳細(xì)信息,如何實(shí)現(xiàn)?何實(shí)現(xiàn)?存儲方式如何選擇?存儲方式如何選擇?元素

5、個數(shù)不確定元素個數(shù)不確定使用集合類使用集合類通過通過key(英文名稱)獲得(英文名稱)獲得value(學(xué)員對象)(學(xué)員對象)存儲對象如何確定?存儲對象如何確定?類型:學(xué)員類型:學(xué)員屬性:中心名稱、姓名屬性:中心名稱、姓名Map接口和接口和HashMap類類 第一步,確定存儲方式第一步,確定存儲方式 1、Map接口用于維護(hù)接口用于維護(hù)“鍵鍵-值對值對”的關(guān)聯(lián)性,可以通過鍵查找值的關(guān)聯(lián)性,可以通過鍵查找值2、HashMap是是Map接口的一個具體實(shí)現(xiàn)類接口的一個具體實(shí)現(xiàn)類 Map接口和接口和HashMap類類 l第二步:確定存儲對象1、創(chuàng)建類型:學(xué)員2、包含屬性:中心名稱、姓名public cla

6、ss Student private String name; / 學(xué)員姓名學(xué)員姓名private String school; / 中心名稱中心名稱public Student(String name, String school) = name;this.school = school;public String toString() return school+畢業(yè)的畢業(yè)的+name;重寫重寫Object的的toString()方法,用于輸出調(diào)試和描方法,用于輸出調(diào)試和描述信息述信息Map接口和接口和HashMap類類 l第三步:具體實(shí)現(xiàn)1、把英文名稱與學(xué)員對象按照“

7、鍵-值對”的方式存儲在HashMap中2、分別打印鍵集、值集、以及鍵-值對集合3、判斷是否存在某個鍵,如果存在則根據(jù)鍵獲取相應(yīng)的值4、根據(jù)鍵、刪除某條記錄public class MapTest public static void main(String args) Student student1 = new Student(李明李明, 北京中心北京中心);Student student2 = new Student(劉麗劉麗, 天津中心天津中心); Map students = new HashMap(); students.put(Jack, student1); students.p

8、ut(Rose, student2); System.out.println(鍵集:鍵集:+students.keySet(); System.out.println(值集值集:+students.values(); System.out.println(鍵鍵-值對集合值對集合:+students); String key = Jack; if(students.containsKey(key) System.out.println(students.get(key); students.remove(key); System.out.println(鍵鍵-值對集合值對集合:+students

9、); 123鍵集:鍵集:Jack, Rose值集值集: 北京中心畢業(yè)的李明北京中心畢業(yè)的李明, 天津中心畢業(yè)的劉麗天津中心畢業(yè)的劉麗鍵鍵-值對集合值對集合:Jack=北京中北京中心畢業(yè)的李明心畢業(yè)的李明, Rose=天津天津中心畢業(yè)的劉麗中心畢業(yè)的劉麗北京中心畢業(yè)的李明北京中心畢業(yè)的李明鍵鍵-值對集合值對集合:Rose=天津天津中心畢業(yè)的劉麗中心畢業(yè)的劉麗控制臺輸出控制臺輸出4請給出下面請給出下面Java代碼的運(yùn)行結(jié)果代碼的運(yùn)行結(jié)果import Java.util.*;public class TestMap public static void main(String args) Stude

10、nt student1 = new Student(李明李明, 西苑中心西苑中心);Student student2 = new Student(劉麗劉麗, 西苑中心西苑中心);Student student3 = new Student(張娜張娜, 馬甸中心馬甸中心);Student student4 = student1; Map students = new HashMap(); students.put(Jack, student1); students.put(Rose, student2); students.put(Mary, student3); students.put(Ro

11、se, student4); System.out.println(鍵集:鍵集:+students.keySet(); System.out.println(值集值集:+students.values(); 鍵集:鍵集:Jack, Mary, Rose值集:值集: 西苑中心畢業(yè)的李明西苑中心畢業(yè)的李明, 馬甸中心畢業(yè)的張娜馬甸中心畢業(yè)的張娜, 西苑中心畢業(yè)的李西苑中心畢業(yè)的李明明LinkedHashMap類類lHashMap的子類l可預(yù)知迭代順序的鏈接哈希映射l影響性能參數(shù)與插入元素順序相同與插入元素順序相同迭代時間與映射大小成比例,與容量無關(guān)迭代時間與映射大小成比例,與容量無關(guān)初始容量初始容

12、量加載因子加載因子Hashtable類類l實(shí)現(xiàn)Map接口,繼承Dictionary類(過時)l實(shí)現(xiàn)一個哈希表l影響性能參數(shù)初始容量初始容量加載因子加載因子SortedMap接口接口l有序映射l按鍵進(jìn)行排序自然順序自然順序或或給定的給定的Comparator比較器比較器有序映射中的有序映射中的鍵必須鍵必須實(shí)現(xiàn)實(shí)現(xiàn) Comparable 接口接口或者或者指定指定Comparator比較器比較器SortedMap接口接口l所有通用的有序映射實(shí)現(xiàn)類應(yīng)該提供四個“標(biāo)準(zhǔn)的”構(gòu)造方法:lvoid(無參數(shù))構(gòu)造方法,創(chuàng)建一個空的有序映射,按照鍵的自然順序進(jìn)行排序。l帶有一個 Comparator 類型參數(shù)的構(gòu)

13、造方法,創(chuàng)建一個空的有序映射,根據(jù)指定的比較器進(jìn)行排序。l帶有一個 Map 類型參數(shù)的構(gòu)造方法,它創(chuàng)建一個新的有序映射,其鍵-值映射關(guān)系與參數(shù)相同,按照鍵的自然順序進(jìn)行排序。l帶有一個 SortedMap 類型參數(shù)的構(gòu)造方法,它創(chuàng)建一個新的有序映射,其鍵-值映射關(guān)系和排序方法與輸入的有序映射相同 SortedMap接口接口l常用方法l常用實(shí)現(xiàn)類l常用子接口clear() ,containsKey(key),containsValue(value),entrySet(),keySet(),values(),get(key),put(key,value),putAll(map),remove(key),size(),isEmpty(),equals(o),hashCode()NavigableMapTreeMapcomparator(),firstKey(

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論