第12天内容
作業:
1.描述HashMap內部實現原理。
HashMap存的是K-V對,K是唯一的不重復的.
原理:
現將hascode進行處理(Hascode右移16位后與自身進行異或運算,目的是將值打散因為如果進行或運算或者與運算會時結果偏大或偏小)然后該值和集合的容量(一般是15)進行與運算,得到一個介于0-15之間的值,該值表示該元素落在的數組下標,也就是該元素儲存在數組中的存儲位置。Hash散列方法效率較高,是針對關鍵詞搜索的算法,當搜于某個元素時,通過Hash方法可以將搜索范圍落在指定位置上,提升了HashMap的搜索速度。同時存儲時如果計算出的介于0-15的值所在的位置為空,則直接將key放到該位置上,如果該位置上非空則首先比較第一個元素的Hashcode值與需要存儲的元素的Hashcode是否相同,若不同則在位置的最后一個元素末尾加入該元素,若Hashcode值相同在進行==||equals()判斷如果也相同則不能插入,若不同則同上面方法。
2.描述Hashset和HashMap的區別。
Hashset:Hashset集合內部是通過HashMap進行實現的。使用的是HashMap中key部分。實現set接口,set繼承collection接口
HashMap:實現Map接口,Map接口與Collection接口是同級的。
它們都具有不重復的特點,采用hash機制進行存儲。
3.年級的集合使用Map的嵌套實現。
? 10班,每個班50人。
代碼:
package?twelve;import?java.util.HashMap; import?java.util.Map; import?java.util.Map.Entry; import?java.util.Set;public?class?NestMapDemo?{public?static?void?main(String[]?args)?{Map<Integer,Map<String,String>>?classes=new?HashMap<Integer,Map<String,String>>();Map<String,String>?students?=?null?;//班級for(int?i=1;i<11;i++){//每個班級的學生students?=?new?HashMap<String,String>();classes.put(i,students);for(int?j=1;j<51;j++){students.put(i+"."+j,?"Kal?"+j);}}System.out.println("EntrySet遍歷=========================")?;for(Entry<Integer,Map<String,String>>?classe?:classes.entrySet()){//?班號Integer?classnos=classe.getKey();Map<String,String>?studentsmap=classe.getValue();for(Entry<String,String>?entry?:?studentsmap.entrySet()){String?stuNo?=?entry.getKey();//名稱String?stuName?=?entry.getValue();System.out.println("班級?"?+classnos?+?"?學號?"?+?stuNo?+?"?學生?"?+?stuName)?;}}System.out.println("KeySet遍歷=========================")?;for(Integer?classno?:?classes.keySet()){Map<String,String>?studentsmap=classes.get(classno);for(String?studentno?:studentsmap.keySet()){System.out.println("班級:?"+classno+"?學號:?"+studentno+"?學生:?"+studentsmap.get(studentno));}}}}結果部分/**EntrySet遍歷========================= 班級?1?學號?1.23?學生?Kal?23 班級?1?學號?1.24?學生?Kal?24 班級?1?學號?1.21?學生?Kal?21 班級?1?學號?1.22?學生?Kal?22 班級?1?學號?1.20?學生?Kal?20 班級?1?學號?1.18?學生?Kal?18 班級?1?學號?1.19?學生?Kal?19 班級?1?學號?1.16?學生?Kal?16 班級?1?學號?1.17?學生?Kal?17 班級?1?學號?1.14?學生?Kal?14 班級?1?學號?1.15?學生?Kal?15 班級?1?學號?1.34?學生?Kal?34 班級?1?學號?1.35?學生?Kal?35 班級?1?學號?1.32?學生?Kal?32 班級?1?學號?1.33?學生?Kal?33 班級?1?學號?1.30?學生?Kal?30 班級?1?學號?1.31?學生?Kal?31 班級?1?學號?1.29?學生?Kal?29 班級?1?學號?1.1?學生?Kal?1 班級?1?學號?1.27?學生?Kal?27 班級?1?學號?1.2?學生?Kal?2 班級?1?學號?1.28?學生?Kal?28 班級?1?學號?1.3?學生?Kal?3 班級?1?學號?1.25?學生?Kal?25 班級?1?學號?1.4?學生?Kal?4 班級?1?學號?1.26?學生?Kal?26 班級?1?學號?1.5?學生?Kal?5 班級?1?學號?1.6?學生?Kal?6 班級?1?學號?1.7?學生?Kal?7 班級?1?學號?1.8?學生?Kal?8 班級?1?學號?1.9?學生?Kal?9 班級?1?學號?1.45?學生?Kal?45 班級?1?學號?1.46?學生?Kal?46 班級?1?學號?1.43?學生?Kal?43 班級?1?學號?1.44?學生?Kal?44 班級?1?學號?1.41?學生?Kal?41 班級?1?學號?1.42?學生?Kal?42 班級?1?學號?1.40?學生?Kal?40 班級?1?學號?1.38?學生?Kal?38 班級?1?學號?1.39?學生?Kal?39 班級?1?學號?1.36?學生?Kal?36 班級?1?學號?1.37?學生?Kal?37 班級?1?學號?1.12?學生?Kal?12 班級?1?學號?1.13?學生?Kal?13 班級?1?學號?1.10?學生?Kal?10 班級?1?學號?1.11?學生?Kal?11 班級?1?學號?1.50?學生?Kal?50 班級?1?學號?1.49?學生?Kal?49 班級?1?學號?1.47?學生?Kal?47 班級?1?學號?1.48?學生?Kal?48 班級?10?學號?10.50?學生?Kal?50 班級?10?學號?10.11?學生?Kal?11 班級?10?學號?10.10?學生?Kal?10 班級?10?學號?10.13?學生?Kal?13 班級?10?學號?10.12?學生?Kal?12 班級?10?學號?10.15?學生?Kal?15 班級?10?學號?10.14?學生?Kal?14 班級?10?學號?10.17?學生?Kal?17 班級?10?學號?10.16?學生?Kal?16 班級?10?學號?10.19?學生?Kal?19 班級?10?學號?10.18?學生?Kal?18 班級?10?學號?10.20?學生?Kal?20 班級?10?學號?10.22?學生?Kal?22 班級?10?學號?10.21?學生?Kal?21 班級?10?學號?10.6?學生?Kal?6 班級?10?學號?10.5?學生?Kal?5 班級?10?學號?10.4?學生?Kal?4 班級?10?學號?10.3?學生?Kal?3 班級?10?學號?10.2?學生?Kal?2 班級?10?學號?10.1?學生?Kal?1 班級?10?學號?10.24?學生?Kal?24 班級?10?學號?10.23?學生?Kal?23 班級?10?學號?10.26?學生?Kal?26 班級?10?學號?10.25?學生?Kal?25 班級?10?學號?10.28?學生?Kal?28 班級?10?學號?10.9?學生?Kal?9 班級?10?學號?10.27?學生?Kal?27 班級?10?學號?10.8?學生?Kal?8 班級?10?學號?10.7?學生?Kal?7 班級?10?學號?10.29?學生?Kal?29 班級?10?學號?10.31?學生?Kal?31 班級?10?學號?10.30?學生?Kal?30 班級?10?學號?10.33?學生?Kal?33 班級?10?學號?10.32?學生?Kal?32 班級?10?學號?10.35?學生?Kal?35 班級?10?學號?10.34?學生?Kal?34 班級?10?學號?10.37?學生?Kal?37 班級?10?學號?10.36?學生?Kal?36 班級?10?學號?10.39?學生?Kal?39 班級?10?學號?10.38?學生?Kal?38 班級?10?學號?10.40?學生?Kal?40 班級?10?學號?10.42?學生?Kal?42 班級?10?學號?10.41?學生?Kal?41 班級?10?學號?10.44?學生?Kal?44 班級?10?學號?10.43?學生?Kal?43 班級?10?學號?10.46?學生?Kal?46 班級?10?學號?10.45?學生?Kal?45 班級?10?學號?10.48?學生?Kal?48 班級?10?學號?10.47?學生?Kal?47 班級?10?學號?10.49?學生?Kal?49 KeySet遍歷=========================*/轉載于:https://blog.51cto.com/11148113/1785028
總結
- 上一篇: asm和file system之间数据文
- 下一篇: jquery 中 fn.apply(th