簡體   English   中英

如何在此ArrayList中搜索null,然后將其替換為另一個Object?

[英]How do I search for null in this ArrayList and then replace it with another Object?

我已經寫了一段時間的停車場結構代碼,有點卡住了。 到目前為止,我有一個ArrayList,用戶可以將Vehicle屬性添加到一個停車位的ArrayList中,而該ArrayList帶有前面的“ SpaceID”和“ Vehicle”。

到目前為止,我可以做到這樣,以便用戶添加車輛並將車輛添加到停車位,但是,我已經建立了一個索引為0:且元素(車輛)為空的臨時停車位。

從這里開始,我想檢查停車位ArrayList是否為“ null”,然后如果找到它,則將車輛替換為null,但是,我不知道如何實現此目的。 我將附加我正在使用的當前代碼,或至少附加它的最小版本。

我已經嘗試過使用Contains(null)方法,但是我似乎無法使其正常工作,我不確定它是否還能工作,但是從那以后我就從我的代碼中刪除了它。

首先,我具有創建車輛並將其存儲在Array中的功能。

```
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 void checkIfEmpty(parkingSpace vehicle){ // if(parkingSpaces.contains(null)){ // parkingSpaces.add(vehicle); // } // else{ // System.out.println("There is no room in this Zone"); // } // }

我也在尋找一種更好的填充停車位的方法,但這不是主要問題,只是其他一些事情,以防有人有任何想法

提前致謝。

由於您使用的是數組列表,因此從其中刪除一項時,其中的兩個元素之間將沒有空元素。 刪除元素時,元素會移動。 因此,對於此代碼,它將檢查數組列表中的元素數量是否小於最大汽車數量。

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");
                }
            }

嘗試做這樣的事情:

public void checkIfEmpty(parkingSpace vehicle) {
    boolean addedVehicle = false;
    for (int i = 0; i < parkingSpaces.size(); i++){
        if (parkingSpaces.get(i) == null) {
            parkingSpaces.add(vehicle);
            addedVehicle = true;
            break;
        }
    }

    if (!addedVehicle)
        System.out.println("There is no room in this Zone");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM