Bạn có thể sử dụng NavigableMap
(TreeMap
là NavigableMap
), là SortedMap
có khả năng điều hướng.
NavigableMap#descendingMap()
trả lại chế độ xem thứ tự ngược lại (không phải bản sao) của ánh xạ có trong bản đồ này.
Ví dụ:
NavigableMap<String, String> items = new TreeMap<String, String>();
items.put("B", "2");
items.put("A", "1");
items.put("C", "3");
for (Map.Entry<String, String> e : items.entrySet()) {
System.out.println(e);
}
// gives
// A=1
// B=2
// C=3
for (Map.Entry<String, String> e : items.descendingMap().entrySet()) {
System.out.println(e);
}
// gives
// C=3
// B=2
// A=1
Lưu ý: Câu trả lời này là hợp lệ nếu bạn quan tâm đến trật tự tự nhiên trong những chìa khóa trong Map
của bạn. Nếu bạn quan tâm đến thứ tự chèn hoặc thứ tự truy cập, hãy xem LinkedHashMap
.
Lưu ý 2: Trong câu hỏi của bạn, bạn đã sử dụng HashMap
. Xin lưu ý rằng HashMap
không đảm bảo bất kỳ thứ tự nào cho các thành phần của nó. Trên thực tế, nó thậm chí không đảm bảo trật tự sẽ vẫn không đổi theo thời gian. Xem đoạn đầu tiên của HashMap
's javadoc để tham khảo thêm.
Cụm từ Cuối cùng và Đầu tiên dường như biểu thị thời gian. Hầu hết các câu trả lời tôi thấy giả sử Cuối cùng và Đầu tiên là ngữ nghĩa (ví dụ: C lớn hơn A và do đó Cuối cùng). OrderedMaps sẽ không giúp bạn nếu bạn cần đặt hàng thời gian chèn và không có dấu thời gian chèn trong khóa. – extraneon
'HashMap' không đảm bảo bất kỳ thứ tự nào cho các thành phần của nó. Đặc biệt, nó không đảm bảo rằng thứ tự vẫn không đổi theo thời gian. Do đó, 'HashMap' không phải là thứ bạn muốn nếu bạn phải duy trì bất kỳ thứ tự nào. – barjak