我将如何删除用户在 Java 中使用 ArrayLists 声明的索引之前(而不是之后!)的索引?

How would I go about removing indexes that come before (not after!) an index stated by the user in Java using ArrayLists?

我一直在开发一个可以让您输入披萨配料的程序。除了 removeToppings() 方法之外,它已经很完整了。

问题是,我似乎无法找出正确的方法来删除用户选择的索引中的配料以及所有 BEFORE 的配料。我找到了很多方法来删除 AFTER 之后的索引,但即便如此我也找不到反转它们的方法。

这是有问题的方法:

public static void removeTopping() 
    {
        Scanner in = new Scanner(System.in);

        printPizza();
        System.out.println("What topping do you want to remove?\n"
                + "Keep in mind, this loses everything else above it.\n"
                + "Enter index number: ");
        int remove = in.nextInt();

        toppings.subList(remove, toppings.size()).clear(); //this is the problem line!
    }

printPizza() 方法会打印如下内容:

|index|topping|
|  0  | cheese
|  1  | three
|  2  | cheese
|  3  | two
|  4  | cheese
|  5  | one
|  6  | sauce
|  7  | crust

假设我输入 5,程序将删除索引 5、6 和 7。我希望它删除 0-5。任何指针将不胜感激。

您可以使用 for 循环来实现此目的。

循环将从删除 remove 变量指定的索引开始。然后,循环将递减 i 直到达到 -1,此时,它将删除您设置的索引以下的所有元素。

    for (int i = remove; i > -1; i--) {
        myList.remove(i);
    }

如果在您的示例中您还想删除位置 5:

toppings.subList(0, remove + 1).clear();