2013-08-17 66 views
1

在Java中,是否存在可用於存儲唯一類對象的集合?使用單個對象創建集合每個類

例如,我直接從Parent繼承一個父類(Parent)和若干子類(ChildAChildB,等等)。

現在,我需要將每個類的實例存儲在一個集合中(Collection<Parent>)。當我加入ChildA一次,我不能再添加更多ChildA's。

我希望能夠通過調用get(ClassB.class)來檢索每個實例,並以類似的方式將其刪除。

是否已經存在提供該功能的集合,還是必須編寫自己的實現?

+0

好了,你可以隨時使用'Set'。 –

+0

「'Set''是否允許我在其中存儲''ClassA''的兩個不同實例?這不是我要找的。 – wassup

+0

您可以創建自己的擴展Set(例如HashSet)的類。重寫add()方法以合併您所需唯一性的邏輯。迭代現有的集合,如果該類的對象不存在,則add else throw運行時異常。 –

回答

3

寫自己的類,它使用一個Map<Class<? extends Parent>, Parent>

private Map<Class<? extends Parent>, Parent> map = new HashMap<>(); 

public void add(Parent p) { 
    if (!map.containsKey(p.getClass()) { 
     map.put(p.getClass(), p); 
    } 
} 

public Parent get(Class<? extends Parent> clazz) { 
    return map.get(clazz); 
} 
+0

這是一個很好的解決方案。謝謝! – wassup

相關問題