Tôi có một SortedMap, được sắp xếp theo thứ tự tự nhiên của khóa của nó. Tôi có thể an toàn bỏ keySet() của mình vào một số SortedSet mà không mạo hiểm một ngoại lệ truyền không hợp lệ.Có thể keySet() của SortedMap luôn được đúc an toàn cho một SortedSet không?
Tức là, điều gì sẽ xảy ra sau đây?
SortedMap<K, V> map = ...;
SortedSet<K> set = (SortedSet<K>) map.keySet();
Nếu câu trả lời "phụ thuộc vào việc triển khai SortedMap", điều này có an toàn tối thiểu cho TreeMap không?
Đối với tất cả những người viết "không được bảo đảm trong tài liệu", hãy để tôi chỉ ra rằng tài liệu cho khóa của SetedSet() nói "Bộ lặp của bộ trả về các khóa theo thứ tự tăng dần." Vì vậy, mặc dù nó không phải là một "SortedSet", nó là một tập hợp được sắp xếp ... –
Trong thực tế nó ** là ** một SortedSet. Nhưng về lý thuyết, miễn là nó không được chỉ định, nó không phải (ví dụ, một SortedSet mới không phải là tập hợp khóa nội bộ có thể được tạo ra cho phép lặp lại - thừa nhận rằng điều này sẽ là ngu ngốc). – assylias
Chỉnh sửa: ngay cả trong thực tế, nó không phải luôn luôn là một Sortedset như chỉ ra bởi một trong những câu trả lời. – assylias