Tôi đã ngạc nhiên bởi thực tế đó Map<?,?>
không phải là một Collection<?>
.
Tôi nghĩ rằng nó sẽ có ý nghĩa rất nhiều nếu nó được tuyên bố như vậy:
public interface Map<K,V> extends Collection<Map.Entry<K,V>>
Rốt cuộc, một Map<K,V>
bộ sưu tập Map.Entry<K,V>
là gì, phải không?
Vì vậy, có một lý do tốt tại sao nó không được thực hiện như vậy?
Cảm ơn Cletus về câu trả lời có thẩm quyền nhất, nhưng tôi vẫn tự hỏi tại sao, nếu bạn đã có thể xem Map<K,V>
dưới dạng Set<Map.Entries<K,V>>
(thông qua entrySet()
), thay vào đó, nó không chỉ mở rộng giao diện đó.
Nếu a
Map
là aCollection
, các yếu tố là gì? Câu trả lời hợp lý duy nhất là "Cặp giá trị khóa"
Chính xác, interface Map<K,V> extends Set<Map.Entry<K,V>>
sẽ rất tuyệt!
nhưng điều này cung cấp một sự
Map
trừu tượng hóa rất hạn chế (và không đặc biệt hữu ích) .
Nhưng nếu đó là trường hợp thì tại sao được entrySet
chỉ định bởi giao diện? Nó phải hữu ích bằng cách nào đó (và tôi nghĩ thật dễ dàng để tranh luận cho vị trí đó!).
Bạn không thể hỏi giá trị của một bản đồ khóa cụ thể là gì, bạn cũng không thể xóa mục nhập cho một khóa đã cho mà không biết giá trị của bản đồ đó là gì.
Tôi không nói rằng đó là tất cả để làm điều đó Map
! Nó có thể và nên giữ tất cả các phương thức khác (ngoại trừ entrySet
, hiện đang dư thừa)!