Java 如何返回每个类的计数';s计数,而不是每一类';s实例计数

Java 如何返回每个类的计数';s计数,而不是每一类';s实例计数,java,static,Java,Static,我有: 接口-ISpacecraft 抽象类-航天器(实现上述接口) 类-4类船舶(衍生于航天器的子类) 任务:返回每艘船的计数,如果我有2艘货船,则返回2艘 问题:当我遍历ArrayList时,它会打印“2”两次,因为我有2艘货船 预期输出:2,1,1,2 电流输出:2,2,1,1,2,2 问题:我如何迭代船舶类型的数量,而不是它们的所有实例 注意:我无法更改“PrintInstanceNumber PerClass”的签名 代码: StarFleetManagerTester publi

我有:

  • 接口-ISpacecraft
  • 抽象类-航天器(实现上述接口)
  • -4类船舶(衍生于航天器的子类)
任务:返回每艘船的计数,如果我有2艘货船,则返回2艘

问题:当我遍历ArrayList时,它会打印“2”两次,因为我有2艘货船

预期输出:2,1,1,2

电流输出:2,2,1,1,2,2

问题:我如何迭代船舶类型的数量,而不是它们的所有实例

注意:我无法更改“PrintInstanceNumber PerClass”的签名

代码:

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());
}
ISpacecraft

protected static int countCruiser;
int getCount();
货物运输、研究等

private static int count
@Override
    public int getCount() {
        return this.count;
    }

您可以像这样定义名为
typeName
String
成员

protected String typeName;

public String getTypeName() {
    return typeName;
}
typeName = "Some Particular Type";
抽象类中定义成员,如下所示

protected String typeName;

public String getTypeName() {
    return typeName;
}
typeName = "Some Particular Type";
现在,对于
抽象类
,您需要一个
静态
映射

public static Map<String, int> typeCounts;

最后,您将需要并使用输出的键和值。

您有什么问题要问我们吗?您应该跟踪船舶的类型。在这里,您计算的是每艘船的一种类型的实例。相反,试着记录每艘船舶的船舶类型实例type@JoeC嗯,我认为这很简单,我已经提供了预期的输出。@DevinSnyder。我该怎么做?它还可以解决其他问题,比如每种类型的船都有不同类型的武器。如果你的问题是“我如何修理它?”,那么这就不是问题所在。你需要把范围缩小到一个具体的技术问题。是否要从列表中删除重复项?或者你更愿意找出船的类型并以此为基础计算?或者您是否希望采取另一种方法,需要我们的帮助?只有这样,我们才能真正有所帮助。