版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第詳解JavaLinkedHashMap與HashMap的使用目錄HashMap存儲自定義類型鍵值LinkedHashMapMap集合練習(xí)JDK9對集合添加的優(yōu)化
HashMap存儲自定義類型鍵值
練習(xí):每位學(xué)生(姓名,年齡)都有自己的家庭住址。那么,既然有對應(yīng)關(guān)系,則將學(xué)生對象和家庭住址存儲到map集合中。學(xué)生作為鍵,家庭住址作為值。
注意,學(xué)生姓名相同并且年齡相同視為同一名學(xué)生。
編寫學(xué)生類:
publicclassStudent{
privateStringname;
privateintage;
publicStudent(){
publicStudent(Stringname,intage){
=name;
this.age=age;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
=name;
publicintgetAge(){
returnage;
publicvoidsetAge(intage){
this.age=age;
@Override
publicbooleanequals(Objecto){
if(this==o)
returntrue;
if(o==null||getClass()!=o.getClass())
returnfalse;
Studentstudent=(Student)o;
returnage==student.ageObjects.equals(name,);
@Override
publicinthashCode(){
returnObjects.hash(name,age);
}
編寫測試類:
publicclassHashMapTest{
publicstaticvoidmain(String[]args){
//1,創(chuàng)建Hashmap集合對象。
MapStudent,Stringmap=newHashMapStudent,String
//2,添加元素。
map.put(newStudent("lisi",28),"上海");
map.put(newStudent("wangwu",22),"北京");
map.put(newStudent("zhaoliu",24),"成都");
map.put(newStudent("zhouqi",25),"廣州");
map.put(newStudent("wangwu",22),"南京");
//3,取出元素。鍵找值方式
SetStudentkeySet=map.keySet();
for(Studentkey:keySet){
Stringvalue=map.get(key);
System.out.println(key.toString()+"....."+value);
}
當(dāng)給HashMap中存放自定義對象時,如果自定義對象作為key存在,這時要保證對象唯一,必須復(fù)寫對象的hashCode和equals方法(如果忘記,請回顧HashSet存放自定義對象)。如果要保證map中存放的key和取出的順序一致,可以使用java.util.LinkedHashMap集合來存放。
LinkedHashMap
我們知道HashMap保證成對元素唯一,并且查詢速度很快,可是成對元素存放進(jìn)去是沒有順序的,那么我們要保證有序,還要速度快怎么辦呢?在HashMap下面有一個子類LinkedHashMap,它是鏈表和哈希表組合的一個數(shù)據(jù)存儲結(jié)構(gòu)。
publicclassLinkedHashMapDemo{
publicstaticvoidmain(String[]args){
LinkedHashMapString,Stringmap=newLinkedHashMapString,String
map.put("青菜","蘿卜");
map.put("紅花","綠葉");
map.put("美景","佳人");
SetEntryString,StringentrySet=map.entrySet();
for(EntryString,Stringentry:entrySet){
System.out.println(entry.getKey()+""+entry.getValue());
}
結(jié)果:
青菜蘿卜
紅花綠葉
美景佳人
Map集合練習(xí)
需求:計算一個字符串中每個字符出現(xiàn)次數(shù)。分析:
獲取一個字符串對象創(chuàng)建一個Map集合,鍵代表字符,值代表次數(shù)。遍歷字符串得到每個字符。判斷Map中是否有該鍵。如果沒有,第一次出現(xiàn),存儲次數(shù)為1;如果有,則說明已經(jīng)出現(xiàn)過,獲取到對應(yīng)的值進(jìn)行++,再次存儲。打印最終結(jié)果
代碼:
publicclassMapTest{
publicstaticvoidmain(String[]args){
//友情提示
System.out.println("請錄入一個字符串:");
Stringline=newScanner(System.in).nextLine();
//定義每個字符出現(xiàn)次數(shù)的方法
findChar(line);
privatestaticvoidfindChar(Stringline){
//1:創(chuàng)建一個集合存儲字符以及其出現(xiàn)的次數(shù)
HashMapCharacter,Integermap=newHashMapCharacter,Integer
//2:遍歷字符串
for(inti=0;iline.length();i++){
charc=line.charAt(i);
//判斷該字符是否在鍵集中
if(!map.containsKey(c)){//說明這個字符沒有出現(xiàn)過
//那就是第一次
map.put(c,1);
}else{
//先獲取之前的次數(shù)
Integercount=map.get(c);
//count++;
//再次存入更新
map.put(c,++count);
System.out.println(map);
}
JDK9對集合添加的優(yōu)化
通常,我們在代碼中創(chuàng)建一個集合(例如,List或Set),并直接用一些元素填充它。實(shí)例化集合,幾個add方法調(diào)用,使得代碼重復(fù)。
publicclassDemo01{
publicstaticvoidmain(String[]args){
ListStringlist=newArrayList();
list.add("abc");
list.add("def");
list.add("ghi");
System.out.println(list);
}
Java9,添加了幾種集合工廠方法,更方便創(chuàng)建少量元素的集合、map實(shí)例。新的List、Set、Map的靜態(tài)工廠方法可以更方便地創(chuàng)建集合的不可變實(shí)例。例子:
publicclassHelloJDK9{
publicstaticvoidmain(String[]args){
SetStringstr1=Set.of("a","b","c");
//str1.add("c");這里編譯的時候不會錯,但是執(zhí)行的時候會報錯,因?yàn)槭遣豢勺兊募?/p>
System.out.println(str1);
MapString,Integerstr2=Map.of("a",1,"b",2);
System.out.print
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光刻技術(shù)原理
- 2025年高職地圖數(shù)據(jù)圖例轉(zhuǎn)換技術(shù)(圖例轉(zhuǎn)換實(shí)操)試題及答案
- 2025年中職設(shè)備維護(hù)管理(管理技術(shù))試題及答案
- 2025年中職服裝與服飾設(shè)計(服飾教學(xué)實(shí)操)試題及答案
- 2025年高職房地產(chǎn)經(jīng)營與管理(房地產(chǎn)經(jīng)營與管理基礎(chǔ))試題及答案
- 2025年高職人力資源管理(招聘與配置)試題及答案
- 2025年高職河運(yùn)海事管理(海事管理基礎(chǔ))試題及答案
- 2025年中職電子技術(shù)應(yīng)用(電子電路基礎(chǔ))試題及答案
- 2025年大學(xué)環(huán)境科學(xué)(水污染控制實(shí)驗(yàn))試題及答案
- 2025年中職第二學(xué)年(老年護(hù)理方向)照護(hù)實(shí)務(wù)階段測試題及答案
- 章節(jié)復(fù)習(xí):平行四邊形(5個知識點(diǎn)+12大??碱}型)解析版-2024-2025學(xué)年八年級數(shù)學(xué)下冊(北師大版)
- 《實(shí)踐論》《矛盾論》導(dǎo)讀課件
- 中試基地運(yùn)營管理制度
- 老年病康復(fù)訓(xùn)練治療講課件
- DB4201-T 617-2020 武漢市架空管線容貌管理技術(shù)規(guī)范
- 藥品追溯碼管理制度
- 腳手架國際化標(biāo)準(zhǔn)下的發(fā)展趨勢
- 購銷合同范本(塘渣)8篇
- 生鮮業(yè)務(wù)采購合同協(xié)議
- GB/T 4340.2-2025金屬材料維氏硬度試驗(yàn)第2部分:硬度計的檢驗(yàn)與校準(zhǔn)
- 銷售合同評審管理制度
評論
0/150
提交評論