在Java 中對HashMap 進行排序
在Java 中,不可能直接對HashMap 進行排序,因為它維護了一個優化訪問的內部結構基於哈希碼的鍵值對。但是,有一些技術可以根據 HashMap 中的值實現排序。
透過比較值進行排序
一種方法是將 HashMap 值轉換為清單並排序基於所需比較的清單。由於可以使用自訂比較器,因此該方法允許靈活的排序標準。例如,要根據年齡對值為Person 物件的HashMap 進行排序:
Map<String, Person> people = new HashMap<>(); ... // Convert HashMap values to a list List<Person> peopleByAge = new ArrayList<>(people.values()); // Sort the list using a comparator Collections.sort(peopleByAge, Comparator.comparing(Person::getAge)); // Print sorted results for (Person p : peopleByAge) { System.out.println(p.getName() + "\t" + p.getAge()); }
使用TreeMap
如果排序標準不特定於值而是根據插入鍵的順序,可以使用TreeMap 來代替HashMap。 TreeMap 會維護自然排序的鍵集合,因此預設會按升序檢索元素。若要實作此解決方案,請將上面程式碼片段中的 HashMap 替換為 TreeMap。
注意事項
根據用例,選擇對 HashMap 值進行排序或使用 TreeMap 可能會有所不同。如果需要透過比較值排序,第一種方法更合適。如果按升序對鍵進行排序就足夠了,那麼 TreeMap 是一個更簡單、更有效率的選擇。
以上是在 Java 中如何根據值或鍵對 HashMap 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!