나는 Map<?,?>
아닌 사실에 놀랐습니다 Collection<?>
.
나는 그것이 그렇게 선언되면 많은 의미가 있다고 생각했다.
public interface Map<K,V> extends Collection<Map.Entry<K,V>>
결국,의 Map<K,V>
모음입니다 Map.Entry<K,V>
, 그렇지 않습니까?
그렇다면 왜 그렇게 구현되지 않은 좋은 이유가 있습니까?
가장 권위있는 답변 클리 터스 덕분에,하지만, 난 여전히 왜, 당신은 이미를 볼 수 있는지 궁금하네요 Map<K,V>
으로 Set<Map.Entries<K,V>>
(통해 entrySet()
), 그냥 그 대신 인터페이스를 확장하지 않습니다.
a
Map
가 인 경우Collection
요소는 무엇입니까? 합리적인 대답은 "키-값 쌍"입니다.
정확히, interface Map<K,V> extends Set<Map.Entry<K,V>>
좋을 것입니다!
그러나 이것은 매우 제한적이고 (특히 유용하지는 않은)
Map
추상화를 제공합니다.
그러나 이것이 사실이라면 왜 entrySet
인터페이스에 의해 지정됩니까? 그것은 어떻게 든 유용해야합니다 (그리고 나는 그 입장에 대해 논쟁하기 쉽다고 생각합니다!).
주어진 키가 어떤 값에 매핑되는지 물어볼 수 없으며, 어떤 키에 매핑되는지를 몰라도 주어진 키에 대한 항목을 삭제할 수 없습니다.
나는 그것이 전부라고 말하는 것이 아닙니다 Map
! 다른 모든 방법을 유지할 수 있고 유지 해야 합니다 ( entrySet
지금은 중복됩니다 제외 )!