如何从java中删除同一索引的三个并行数组中的元素?

时间:2014-02-07 20:03:38

标签: java arrays parallel-arrays

我需要让用户输入他们想要删除的名称,然后找到数组中保存该名称的索引。然后我需要删除名称以及价格和评级。我可能只使用并行数组。我不确定他们的其他部分是否正在成功运行,因为我正在尝试使用.remove()并且我收到错误:

cannot find symbol

symbol: method remove(int)

location: variable array1 of type String[]

public static void removeGames(Scanner keyboard, String[] array1,            
        double[] array2, double[] array3, int currentLength)
{
    String removeInput;

    System.out.println("Enter the name of the game you would like to remove"
            + " from the list: ");
    removeInput = keyboard.next();

    for(int i = 0; i < array1.length; i++)
    {
        if(removeInput.equalsIgnoreCase(array1[i]))
        {
            array1.remove(i);
            array2.remove(i);
            array3.remove(i);
        }
    }
}

4 个答案:

答案 0 :(得分:4)

一些事情。

  1. 数组没有remove()方法。如果要在Array数据结构上执行该操作,则需要使用ArrayList。
  2. 并行数组可能会令人困惑。相反,将所有信息放入其自己的对象中:

    class Game {
        String name;
        double price, rating;
    }
    
  3. 然后你可以写:

        ArrayList<Game> games = new ArrayList<Game>();
    

答案 1 :(得分:3)

remove没有Array方法。您可以使用Arraylist.remove()方法。

答案 2 :(得分:3)

您收到此错误的原因是因为Java中的数组对象没有.remove()方法。如果你真的想要一个可以从中删除对象的动态集合,你应该使用一个ArrayList。

只需使用ArrayLists替换方法签名中的数组,然后在您的正文中将array1[i]替换为array1.get(i),如下所示:

public static void removeGames(Scanner keyboard, ArrayList<String> array1,            
        ArrayList<Double> array2, ArrayList<Double> array3, int currentLength) {
    String removeInput;

    System.out.println("Enter the name of the game you would like to remove"
            + " from the list: ");
    removeInput = keyboard.next();

    for(int i = 0; i < array1.length; i++) {
        if(removeInput.equalsIgnoreCase(array1.get(i)) {
            array1.remove(i);
            array2.remove(i);
            array3.remove(i);
        }
    }
}

只需确保导入java.util.ArrayList

答案 3 :(得分:0)

如果你真的需要使用数组,你应该编写自己的方法来删除所需的元素。由于java在java.util包中有相当令人印象深刻的容器集合,我建议从那里使用一个。由于您需要访问给定索引处的元素,我建议使用ArrayList。如果您知道索引并且只想从那里删除元素,请使用LinkedList

我还建议对List接口进行编码,因此您的代码将如下所示:

public static void removeGames(Scanner keyboard, List<String> array1,            
    List<Double> array2, List<Double> array3) {
    String removeInput;

    System.out.println("Enter the name of the game you would like to remove"
        + " from the list: ");
    removeInput = keyboard.next();

    int index = array1.indexOf(removeInput);
    array1.remove(index);
    array2.remove(index);
    array3.remove(index);
}