使用每个类的单个对象创建集合

时间:2013-08-17 12:06:24

标签: java collections

在Java中,是否存在可用于存储唯一类对象的集合?

例如,我有一个父类(Parent)和几个直接从ChildA继承的子类(ChildBParent等)。 / p>

现在,我需要将每个类的实例存储在一个集合(Collection<Parent>)中。当我将ChildA添加到集合中时,我一定无法添加更多ChildA

我希望能够通过调用get(ClassB.class)来检索每个实例,并以类似的方式将其删除。

是否已经存在提供该功能的集合,或者我是否必须编写自己的实现?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:-1)