2015-03-18 12 views
8

Tại sao các phương pháp treeMap.entrySet()treeMap.keySet() không trả lại SortedSet? Tôi có thể đi xa đến mức nói rằng đó là một sai lầm. Theo API, một Set được định nghĩa là không có thứ tự cụ thể. Tuy nhiên, các bộ được trả về bởi TreeMap do có một thứ tự cụ thể.Không nên treeMap.entrySet() trả về một SortedSet?

+1

Điều gì khiến bạn nghĩ rằng nó không trả về một 'SortedSet' (tôi đoán bạn có nghĩa là' TreeSet' ở đó)? –

+0

@RohitJain Đó là những gì API nói. –

+0

API chỉ nói rằng nó sẽ trả về chế độ xem 'Đặt'. Việc thực thi 'Set' thực tế mà nó trả về là không có, và không nên ở đó. Đó là chi tiết triển khai. –

Trả lời

10

Tôi nghĩ rằng nếu họ đã viết giao diện SortedMap bây giờ, cả hai keySetentrySet sẽ trở SortedSet. Tuy nhiên, giao diện SortedMap đã được giới thiệu trong Java 1.2 trước khi các kiểu trả về biến đổi được cho phép. Họ không thể thay đổi điều này ngay bây giờ vì sẽ có triển khai SortedMap ngoài đó, trong đó keySetentrySet trả về một Setkhông a SortedSet.

+0

Mặc dù nó không phải là một SortedSet, nó trong thực tế xác định rằng Set trả về là theo thứ tự tăng dần, như được định nghĩa trong javadoc của giao diện SortedMap. – Robin

Các vấn đề liên quan