更新時間:2020-05-15 15:26:10 來源:動力節點 瀏覽3152次
1.HashMap存儲每對鍵和值作為一個Entry<K,V>對象。例如,給出一個HashMap,
Map<String,Integer>aMap=newHashMap<String,Integer>();
鍵的每次插入,都會有值對應到散列映射上,生成一個Entry<K,V>對象。通過使用這個Entry<K,V>對象,我們可以根據值來排序HashMap。
2.創建一個簡單的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恢復entry集合,如下所示。
Set<Entry<String,Integer>>mapEntries=aMap.entrySet();
4.從上述mapEntries創建LinkedList。我們將排序這個鏈表來解決順序問題。我們之所以要使用鏈表來實現這個目的,是因為在鏈表中插入元素比數組列表更快。
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())——比較這兩個值,返回0——如果這兩個值完全相同的話;返回1——如果第一個值大于第二個值;返回-1——如果第一個值小于第二個值。
7.Collections.sort()是一個內置方法,僅排序值的列表。它在Collections類中重載。這兩種個方法是
publicstatic<TextendsComparable<?superT>>voidsort(List<T>list)publicstatic<T>voidsort(List<T>list,Comparator<?superT>c)
以上就是動力節點java培訓機構的小編針對“Java面試如何對HashMap按鍵值排序”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習