9
เหตุใด Java Map จึงไม่ขยายการรวบรวม
ฉันรู้สึกประหลาดใจโดยความจริงที่ว่าไม่ได้เป็นMap<?,?>Collection<?> ฉันคิดว่ามันคงสมเหตุสมผลถ้ามีการประกาศเช่นนี้: public interface Map<K,V> extends Collection<Map.Entry<K,V>> ท้ายที่สุดแล้ว a Map<K,V>คือชุดของMap.Entry<K,V>ใช่ไหม ดังนั้นมีเหตุผลที่ดีว่าทำไมจึงไม่ใช้งานเช่นนี้ ขอบคุณ Cletus สำหรับคำตอบที่เชื่อถือได้มากที่สุด แต่ฉันยังคงสงสัยว่าทำไมหากคุณสามารถดู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ซึ่งซ้ำซ้อนในขณะนี้)!
146
java
oop
collections