在Java中,是否存在可用于存储唯一类对象的集合?
例如,我有一个父类(Parent
)和几个直接从ChildA
继承的子类(ChildB
,Parent
等)。 / p>
现在,我需要将每个类的实例存储在一个集合(Collection<Parent>
)中。当我将ChildA
添加到集合中时,我一定无法添加更多ChildA
。
我希望能够通过调用get(ClassB.class)
来检索每个实例,并以类似的方式将其删除。
是否已经存在提供该功能的集合,或者我是否必须编写自己的实现?
答案 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)