tl; dr
Để theo Map< Integer , String >
thứ tự được sắp xếp theo khóa, hãy sử dụng một trong hai lớp thực hiện SortedMap
/ NavigableMap
giao diện:
TreeMap
ConcurrentSkipListMap
Nếu thao tác trên bản đồ trong một luồng, sử dụng đầu tiên , TreeMap
. Nếu thao tác trên các chủ đề, sử dụng thứ hai , ConcurrentSkipListMap
.
Để biết chi tiết, xem bảng dưới đây và các cuộc thảo luận sau đây.
Chi tiết
Đây là một bảng đồ họa tôi đã thực hiện cho thấy các tính năng của mười Map
triển khai được gói cùng với Java 11.
Các NavigableMap
giao diện là những gì SortedMap
cần phải có được ở nơi đầu tiên. CácSortedMap
logic cần được loại bỏ nhưng không thể như một số triển khai bản đồ của bên thứ 3 có thể được sử dụng giao diện.
Như bạn có thể thấy trong bảng này, chỉ có hai lớp thực hiện SortedMap
/ NavigableMap
giao diện:
Cả hai đều giữ các khóa theo thứ tự được sắp xếp, theo thứ tự tự nhiên của chúng (sử dụng compareTo
phương thức của Comparable
( https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ Giao diện so sánh.html ) hoặc bằng cách Comparator
triển khai bạn vượt qua. Sự khác biệt giữa hai loại cổ phiếu này là một trong những thứ hai, ConcurrentSkipListMap
là thread-safe , cao đồng thời .
Xem thêm cột thứ tự lặp trong bảng dưới đây.
- Các
LinkedHashMap
lớp trả về mục của nó bởi thứ tự mà họ đã đưa ban đầu .
EnumMap
trả về các mục theo thứ tự mà lớp enum của khóa được xác định . Ví dụ, bản đồ mà nhân viên đang trình bày vào ngày nào trong tuần ( Map< DayOfWeek , Person >
) sử dụng DayOfWeek
lớp enum được tích hợp trong Java. Enum đó được xác định với thứ Hai đầu tiên và Chủ nhật cuối cùng. Vì vậy, các mục trong một iterator sẽ xuất hiện theo thứ tự đó.
Sáu triển khai khác không hứa hẹn về thứ tự mà họ báo cáo các mục nhập của họ.