java - 如何在此 ArrayList 中搜索 null,然后将其替换为另一个对象?

标签 java if-statement arraylist compare user-input

我已经编写了 parking 场结构的代码一段时间,但我有点陷入困境。到目前为止,我有一个 ArrayList,用户可以将车辆属性添加到其中,还有一个带有“SpaceID”和之前的“Vehicle”的 parking 位的 ArrayList。

到目前为止,我可以让用户添加车辆,并将车辆添加到 parking 位,但是我已经创建了一个索引为 0: 且元素(车辆)为空的临时 parking 位。

从这里开始,我想检查 parking 位 ArrayList 是否为“null”,然后如果找到,则用车辆替换 null,但是,我不知道如何实现这一点。我将附上我正在使用的当前代码,或者至少是它的最小版本。

我已经尝试过使用 Contains(null) 方法,但我似乎无法使其正常工作,我不确定它是否可以工作,但从那时起我已将其从我的代码中删除。

首先,我有创建车辆并将其存储在数组中的功能。

```
public void carInfo(Vehicle tempVehicle, parkingSpace vehicle) {

    array = new MCP();

    System.out.println("Please enter number plate: ");
    input = new Scanner(System.in);
    String plate = input.nextLine();

    System.out.println("Please enter car make: ");
    input = new Scanner(System.in);
    String make = input.nextLine();

    System.out.println("How would you best describe your Vehicle? ");
    System.out.println("(Car, Small Van, Tall Van, Long Van, Coach, 
    Motorbike)");
    type = new Scanner(System.in);
    String type1 = input.nextLine();

    if (type1.equalsIgnoreCase(vehicleType.CAR.toString())) {
        tempVehicle.setPlate(plate);
        tempVehicle.setCarMake(make);
        tempVehicle.setVehicle(vehicleType.CAR);
        inv.createInvoice();
        tempVehicle.setInvoiceNumber(inv.invoiceNumber);

        array.addStandard(tempVehicle);
        array.parkVehicle(vehicle);

        System.out.println(tempVehicle.toString());
        System.out.println(vehicle.toString()); 
```

我也有我的数组,它们在另一个类中。

```
    public MCP(){
       vehicles = new ArrayList<>();
       parkingSpaces = new ArrayList<>();

       parkingSpaces.add(0, null);
       parkingSpaces.add(1, null);

     }


    public void addStandard(Vehicle tempVehicle) {
       vehicles.add(tempVehicle);
     }

     public void parkVehicle(parkingSpace vehicle) {
       parkingSpaces.add(vehicle);
     }
```

这是我尝试做的方式,但我无法弄清楚这种方式,所以我停下来,我也对任何其他方式持开放态度。 //公共(public)无效 checkIfEmpty(parkingSpace 车辆){ //if(parkingSpaces.contains(null)){ //parkingSpaces.add(车辆); //} // 别的{ //System.out.println("该区域没有空间"); //} //}

我也在寻找一种更好的方法来填充 parking 位,但这不是主要问题,只是为了以防万一有人有任何想法

提前致谢。

最佳答案

由于您使用的是数组列表,因此当从中删除项目时,其中的两个元素之间不会有空元素。当您删除一个元素时,该元素会发生移动。因此,在这段代码的情况下,它检查数组列表中的元素数量是否小于最大汽车数量

int maxSize = 10; //suppose that the maximum number of cars is 10
        public void checkIfEmpty(parkingSpace vehicle){
                if(parkingSpaces.size() < maxSize){
                    parkingSpaces.add(vehicle);
                }
                else{
                    System.out.println("There is no room in this Zone");
                }
            }

关于java - 如何在此 ArrayList 中搜索 null,然后将其替换为另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55786165/

相关文章:

java - 可嵌入和 ElementCollection 嵌套

Java:单独的时间数字

javascript - 仅在满足条件时执行一次 if 语句

java - 如何将其添加到静态方法中的数组列表中?

Python:列表超出范围

java - 读取 ArrayList JTextFields

java - 任务 :app:transformClassesWithJarMergingForDebug 执行失败

JavaCC 初学者 - 如何使程序仅接受没有重复项的情况?

javascript - if 忽略条件 JQuery

c# - 检查 DateTime 是否早于 DateTime.Now