You need a Map key for Class (instance type Parent ):
Map<Class<? extends Parent>, Integer> map = new HashMap<>();
And instead of:
map.put(child, child.getValue (child)++);
using:
if (map.containsKey(child.getClass())) { map.put(child.getClass(), map.get (child.getClass())+1); } else { map.put(child.getClass(), 1); }
or
map.put(child.getClass(), map.getOrDefault(child.getClass(), 0) + 1);
source share