LinkedHashMap
không cung cấp một cách để bắt đầu lặp lại ở giữa xem ra lệnh của nó dữ liệu của bản đồ. Giả sử trường hợp sử dụng của bạn thực sự là bạn muốn tất cả các ngày sau một số Date d
và để lặp lại những trường hợp đó, thì có thể bạn nên lưu trữ bản đồ của mình dưới dạng TreeMap
. Sự khác biệt quan trọng ở đây là thứ tự của LinkedHashMap
là thứ tự chèn và trường hợp sử dụng được cho là của chúng tôi ở đây là bạn muốn tự nhiên khóa đơn đặt hàng. TreeMap
s duy trì chế độ xem như vậy, sắp xếp nội dung của bản đồ theo khóa của bản đồ.
TreeMap
s có lợi ích bổ sung cho phép bạn tạo các bản đồ dựa trên khóa, vì vậy bạn có thể gọi tailMap(K k)
, để trả lại bản đồ với tất cả các phím xảy ra sau k
. Trong trường hợp này, bạn có thể gọi tailMap
với điểm xuất phát của mình, d
.
ví dụ .:
TreeMap<Date, Double> dateForPrice;
// load up dateForPrice
Date start = // the point to start your iteration
for(Entry<Date, Double> entry : dateForPrice.tailMap(start).entrySet()){
// loop code
}
tailMap
phương thức trả về SortedMap
, mà không phải là iterable. Nhưng nó có phương thức entrySet
trả lại Set
, là phần con của Iterable
.
thuận, nếu bạn muốn giữ lại lưu trữ dữ liệu của bạn trong một LinkedHashMap
bạn chỉ có thể tải lên một TreeMap
với ví dụ hiện tại của bạn (với một số cân bằng hiệu suất, tất nhiên):
TreeMap<Date, Double> dateSortedDateForPrice = new TreeMap<Date, Double>(dateForPrice);
Nguồn
2011-07-06 02:52:00
Thậm chí nếu bạn có thể nhảy đến một vị trí cụ thể, thứ tự lặp của 'LinkedHashMap' sẽ là * thứ tự chèn *, không phải thứ tự tự nhiên của các phím; đó là điều bạn muốn? –
Vâng, đó là những gì tôi muốn. Giá cổ phiếu sẽ được chèn vào theo thứ tự ngày tháng. –