我有:
任务:返回每艘船的计数,如果我有2艘货船,则返回2.
问题:当我遍历ArrayList时,它会打印' 2'两次,因为我有2艘货船。
预期输出: 2,1,1,2
当前输出: 2,2,1,1,2,2
问题:如何迭代船舶类型的数量而不是所有船只的实例?
注意:我无法更改' printInstanceNumberPerClass'的签名。
代码:
StarFleetManagerTester
public static void printInstanceNumberPerClass (ArrayList<ISpacecraft> fleet)
{
ArrayList<ISpacecraft> objects = new ArrayList<>(fleet);
ArrayList<Integer> cnt = new ArrayList<Integer>();
for(ISpacecraft obj : objects)
{
cnt.add(obj.getCount());
}
for(ISpacecraft obj : objects)
System.out.println(obj.getCount() +" "+obj.getName());
}
航天器
protected static int countCruiser;
ISpacecraft
int getCount();
cargoShip,ReserarchShip等..
private static int count
@Override
public int getCount() {
return this.count;
}
答案 0 :(得分:1)
您可以像这样定义名为String
的{{1}}成员
typeName
进入protected String typeName;
public String getTypeName() {
return typeName;
}
并在子类构造函数中定义成员,如下所示
abstract class
现在,typeName = "Some Particular Type";
需要static
Map
:
abstract class
并在public static Map<String, int> typeCounts;
的构造函数中执行以下操作:
abstract class
最后,您需要to iterate typeCounts并使用输出的键和值。