1. ホーム
  2. java

[解決済み] オブジェクトの配列にArrayUtilsを使用する方法、それは配列の内容を削除しない

2022-01-29 12:43:16

質問

オブジェクトの配列の内容を削除する方法。オブジェクトの配列のコンテンツを削除する他の方法があれば、教えてください。

import java.util.Arrays;
import java.util.Scanner;

import org.apache.commons.lang3.ArrayUtils;

public class Testing {

  public static void deleteItem(ItemTracker[] listItems) {
    System.out.println("Which item you want to delete? ");
    for(int i=0; i < listItems.length; i++) {
            if(input.equalsIgnoreCase("Quantity")) {
                // Some Code
            } else if(input.equalsIgnoreCase("Something"){
                ArrayUtils.remove(listItems, i); //  This is the part where it should delete .. but it doesnt delete. 
            } 
            break;
        }
      }
    }

解決方法は?

これを変更する

ArrayUtils.remove(listItems, i);

になります。

listItems = ArrayUtils.remove(listItems, i);

でお分かりのように JavaDoc このメソッドは、引数 listItems その代わり、残りの要素で新しい配列を返します。

編集

また、削除方法を次のように変更する必要があります。

public static ItemTracker[] deleteItem(ItemTracker[] listItems) {
    //..
}

つまり、残りの要素で新しい配列を返せばいいわけです。