java—创建一个列表,其中每个列表对象都有自己的子对象

emeijp43  于 2021-07-11  发布在  Java
关注(0)|答案(2)|浏览(330)

我有一份名为“conroshiplist”的conroship级船舶清单。我想在我创建为对象的列表中的每一艘船上都有几个basiccontainer类的容器。如何将basiccontainer对象放置在conroship列表中的conroship对象中?例如,我想在清单上的一艘船上有5个集装箱。以下代码:

public
    class ConRoShip  extends Ship {

    private final float MAX_SHIP_WEIGHT_CAPACITY = 15000.00f;
    private float initialShipCapacity = 2000.00f;

    List<ConRoShip> conRoShipList = new LinkedList<ConRoShip>();

    public ConRoShip(String name, String homePort, String transportSourceLocation, String transportDestination) {
        super(name, homePort, transportSourceLocation, transportDestination);
        shipCapacity += initialShipCapacity;
    }

}

public
    class BasicContainer extends Container {

    private int cargoCapacityUnits; // pieces

    public BasicContainer(String name, String sender, String safety,
                          double netWeight, double grossWeight, int cargoCapacityUnits) {
        super(name, sender, safety, netWeight, grossWeight);
        this.cargoCapacityUnits = cargoCapacityUnits;
    }
}
iqih9akk

iqih9akk1#

我建议在ship类中使用map。

Map<String, List<Container>> containers = new HashMap<>();

然后可以按如下方式添加容器。这会自动为每个命名容器创建一个新列表,然后将容器添加到该列表中。

containers.computeIfAbsent(name, k -> new ArrayList<>())
                .add(container);

您可以有如下add方法:

public void add(String containerName, Container c) {
    containers.computeIfAbsent(containerName, k -> new ArrayList<>())
                .add(c);
}

检索容器列表。

public List<Container> getContainer(String containerName) {
    return containers.get(containerName);
}
pu82cl6c

pu82cl6c2#

可以将基本容器的arraylist添加到构造函数中。因此,每次你创建一个合作,将有可能添加所有的容器,你想这个对象。

public ConRoShip(String name, String homePort, String transportSourceLocation, String 
transportDestination, ArrayList<BasicContainer> basicContainerList) {
    super(name, homePort, transportSourceLocation, transportDestination);
    shipCapacity += initialShipCapacity;
}

相关问题