Đây là một câu hỏi rất cơ bản, tôi không tốt với Java. Tôi có một bản đồ và tôi muốn có được một danh sách hoặc một cái gì đó của các phím trong thứ tự sắp xếp để tôi có thể lặp lại chúng.Làm cách nào để sắp xếp các khóa của Bản đồ trong Java?
Trả lời
Sử dụng TreeMap
, đây là triển khai giao diện SortedMap
. Nó trình bày các phím của nó theo thứ tự sắp xếp.
Map<String, Object> map = new TreeMap<String, Object>();
/* Add entries to the map in any order. */
...
/* Now, iterate over the map's contents, sorted by key. */
for (Map.Entry<String, ?> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
Nếu bạn đang làm việc với một thực hiện Bản đồ mà không được sắp xếp theo ý muốn, bạn có thể vượt qua nó để constructor của TreeMap
để tạo ra một bản đồ mới với các phím được sắp xếp.
void process(Map<String, Object> original) {
Map<String, Object> copy = new TreeMap<String, Object>(original);
/* Now use "copy", which will have keys in sorted order. */
...
}
Một TreeMap
làm việc với bất kỳ loại hình chính mà thực hiện giao diện Comparable
, đặt chúng theo thứ tự "tự nhiên" của họ. Đối với các khóa không phải là Comparable
hoặc có thứ tự tự nhiên không phải là thứ bạn cần, bạn có thể triển khai Comparator
của riêng mình và chỉ định điều đó trong constructor.
Bạn có một số tùy chọn. Liệt kê theo thứ tự ưu tiên:
- Sử dụng một
SortedMap
:
SortedMap<whatever> myNewMap = new TreeMap<whatever>(myOldMap);
Đây là bao la thích hợp hơn nếu bạn muốn lặp nhiều lần. Nó giữ các phím được sắp xếp để bạn không phải sắp xếp chúng trước khi lặp lại. - Không có số 2.
- Không có # 3.
SortedSet<whatever> keys = new TreeSet<whatever>(myMap.keySet());
List<whatever> keys = new ArrayList<whatever>(myMap.keySet()); Collections.sort(keys);
cuối cùng hai sẽ giúp bạn có được những gì bạn muốn, nhưng chỉ nên được sử dụng nếu bạn chỉ muốn lặp một lần và sau đó quên toàn bộ điều.
Trong bướC# 4, bạn cũng có thể tạo một TreeSet (một tập hợp được sắp xếp) thay vì một danh sách, giúp bạn tiết kiệm được một cuộc gọi rõ ràng để sắp xếp(). –
@ David: Tôi đã nghĩ về điều đó, nhưng vì một lý do nào đó tôi quên rằng nó có thể lặp qua một Set. Nó đòi hỏi phải phân loại mỗi lần, mặc dù. –
hmm tôi thích số 4. tại sao nó yêu cầu phân loại nhiều hơn số 1?tôi đã có thể nghĩ rằng nó là tốt như nhau –
Bạn có thể tạo bộ sưu tập được sắp xếp khi lặp lại nhưng có ý nghĩa hơn khi có bản đồ được sắp xếp ở vị trí đầu tiên. (Như đã được đề xuất)
Tất cả như nhau, dưới đây là cách bạn thực hiện.
Map<String, Object> map;
for(String key: new TreeSet<String>(map.keySet()) {
// accessed in sorted order.
}
- 1. Cách dễ nhất để sắp xếp bản đồ theo giá trị trong Java là gì?
- 2. Sắp xếp bản đồ trong bản đồ theo giá trị
- 3. Làm cách nào để sắp xếp bản đồ STL theo giá trị?
- 4. Sắp xếp bản đồ <String, Object> bằng các khóa bằng IgnoreCase?
- 5. đồ Scala sắp xếp
- 6. Cách sắp xếp Thuộc tính trong java?
- 7. Sắp xếp thứ tự trong bản đồ STL và đặt
- 8. std :: sắp xếp bản đồ theo dữ liệu?
- 9. Làm cách nào để phân tích bản đồ (foreach) theo thứ tự tôi đã tạo (JAVA)
- 10. Lớp khóa nào phù hợp để sắp xếp thứ cấp?
- 11. Làm thế nào để bạn sử dụng được sắp xếp-bản đồ-by trong Clojure?
- 12. Cách sắp xếp một HashMap trong Java
- 13. Làm cách nào để sắp xếp một mảng trong Scala?
- 14. Làm cách nào để bạn sắp xếp các phần tử mã trong văn bản thông thường?
- 15. Sắp xếp bản đồ Grails trên nhiều trường :: Groovy sắp xếp trên nhiều mục nhập bản đồ
- 16. Làm cách nào để sắp xếp các gói của bạn trong các dự án Symfony2?
- 17. Sắp xếp nhiều khóa với Unix sắp xếp
- 18. Làm cách nào để sắp xếp lại các cột Mysql?
- 19. Làm cách nào để xóa nhiều khóa khỏi bản đồ?
- 20. Làm cách nào để ngăn chặn tên thuộc tính trong sơ đồ lớp được sắp xếp?
- 21. Làm thế nào để sắp xếp số trong javascript cách sắp xếp
- 22. làm thế nào để sắp xếp số trong giai đoạn trộn/sắp xếp của Hadoop?
- 23. Làm cách nào để sắp xếp một chuỗi các chuỗi?
- 24. Cách sắp xếp/sắp xếp dữ liệu trong Riak?
- 25. Sắp xếp lại một bản đồ không có chuỗi là chìa khóa với thang máy-json
- 26. Làm thế nào để sắp xếp các phím HashMap
- 27. đợi Sắp xếp lại trong ThreadPoolExecutor Java
- 28. Làm thế nào để sắp xếp NameValueCollection bằng cách sử dụng một khóa trong C#?
- 29. Không tìm thấy bản đồ nào cho trường để sắp xếp trong ElasticSearch
- 30. Sắp xếp các phiên bản PowerShell
Mã tôi đang tiêu thụ mang lại cho tôi đối tượng Bản đồ, vậy làm cách nào để chuyển đổi nó thành TreeMap hoặc sử dụng TreeMap để sắp xếp? – Bialecki
Bạn có thể tạo TreeMap bằng cách sử dụng một hàm tạo có tham số là bất kỳ Bản đồ nào. Ngoài ra, xin chúc mừng erickson (Tôi giả sử, vì bạn chỉ có 5 đại diện từ 10k). –
Ding! erickson lên cấp. –