import java.util.Map; import java.util.HashMap; public class MapVehicleCounter extends VehicleCounter { private Map, Count> counts; public MapVehicleCounter() { counts = new HashMap, Count>(); counts.put(Car.class, new Count()); counts.put(Bike.class, new Count()); counts.put(Motorbike.class, new Count()); } public void count(Vehicle[] vehicles) { for (Vehicle vehicle: vehicles) { Count count = counts.get(vehicle.getClass()); ++count.num; } } public int getNumCars() { return counts.get(Car.class).num; } public int getNumBikes() { return counts.get(Bike.class).num; } public int getNumMotorbikes() { return counts.get(Motorbike.class).num; } private class Count { public int num; } }