1.HashMap存儲(chǔ)每對(duì)鍵和值作為一個(gè)Entry<K,V>對(duì)象。例如,給出一個(gè)HashMap,
Map<String,Integer>aMap=newHashMap<String,Integer>();
鍵的每次插入,都會(huì)有值對(duì)應(yīng)到散列映射上,生成一個(gè)Entry<K,V>對(duì)象。通過使用這個(gè)Entry<K,V>對(duì)象,我們可以根據(jù)值來排序HashMap。
2.創(chuàng)建一個(gè)簡(jiǎn)單的HashMap,并插入一些鍵和值。
ap<String,Integer>aMap=newHashMap<String,Integer>();//addingkeysandvaluesaMap.put("Five",5);aMap.put("Seven",7);aMap.put("Eight",8);aMap.put("One",1);aMap.put("Two",2);aMap.put("Three",3);
3.從HashMap恢復(fù)entry集合,如下所示。
Set<Entry<String,Integer>>mapEntries=aMap.entrySet();
4.從上述mapEntries創(chuàng)建linkedList。我們將排序這個(gè)鏈表來解決順序問題。我們之所以要使用鏈表來實(shí)現(xiàn)這個(gè)目的,是因?yàn)樵阪湵碇胁迦朐乇葦?shù)組列表更快。
List<Entry<String,Integer>>aList=newlinkedList<Entry<String,Integer>>(mapEntries);
5.通過傳遞鏈表和自定義比較器來使用Collections.sort()方法排序鏈表。
Collections.sort(aList,newComparator<Entry<String,Integer>>(){@Overridepublicintcompare(Entry<String,Integer>ele1,Entry<String,Integer>ele2){returnele1.getValue().compareTo(ele2.getValue());}});
6.使用自定義比較器,基于entry的值(Entry.getValue()),來排序鏈表。
ele1.getValue().compareTo(ele2.getValue())——比較這兩個(gè)值,返回0——如果這兩個(gè)值完全相同的話;返回1——如果第一個(gè)值大于第二個(gè)值;返回-1——如果第一個(gè)值小于第二個(gè)值。
7.Collections.sort()是一個(gè)內(nèi)置方法,僅排序值的列表。它在Collections類中重載。這兩種個(gè)方法是
publicstatic<TextendsComparable<?superT>>voidsort(List<T>list)publicstatic<T>voidsort(List<T>list,Comparator<?superT>c)
以上就是長(zhǎng)沙一度軟件培訓(xùn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java面試如何對(duì)HashMap按鍵值排序”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。