在arraylist中删除特定字符串的正确方法是什么?

时间:2014-03-17 15:00:54

标签: java arraylist

我正在制作一个添加/删除注册牌号的程序,但是当我删除特定的牌号时我遇到了麻烦。这是我的代码的一些部分。

ArrayList<String> PlateNumber = new ArrayList<String>(10);

System.out.println("Enter your Plate Number : ");
Scanner pn = new Scanner(System.in);
String PlateNumberxx = pn.nextLine();

System.out.println("Log in / Log out: ");
Scanner YoN = new Scanner(System.in);
String des = YoN.nextLine();

if(des.equals("log in")) {
    PlateNumber.add(PlateNumberxx);
}

if(des.equals("log out")){
    PlateNumber.remove(PlateNumberxx);
    System.out.println("Time log out : " + PlateNumberxx + " " + d);
}

它不会删除我在扫描仪中输入的内容。我的代码有什么问题?

2 个答案:

答案 0 :(得分:0)

当您尝试删除元素时,如何初始化列表,我不确定。我猜这可能是你的问题所在。

但是,为了删除元素,您的代码正在运行。

这是添加到此列表中的元素。我会在删除之前和之后打印出列表中的内容。

public static void main(final String[] args) {
    final List<String> plateNumber = new ArrayList<String>(10);
    plateNumber.add("123");

    System.out.println("Plate Numbers to begin with: " + plateNumber.toString());

    System.out.println("Enter your Plate Number : ");
    final Scanner pn = new Scanner(System.in);
    final String plateNumberxx = pn.nextLine();

    System.out.println("Log in / Log out: ");
    final Scanner YoN = new Scanner(System.in);
    final String des = YoN.nextLine();

    if(des.equals("log in")) {
        plateNumber.add(plateNumberxx);
    }

    if(des.equals("log out")){
        plateNumber.remove(plateNumberxx);
        System.out.println("Time log out : " + plateNumberxx + " ");
        System.out.println("Plate Numbers after removal: " + plateNumber.toString());
    }
}

我得到的输出是:

  

板块编号开头:[123]

     

输入您的铭牌号码:

     

123

     

登录/退出:

     

退出

     

时间退出:123

     

去除后的板数:[]

答案 1 :(得分:-2)

如果要从arraylist中删除值,请不要使用方法ArrayList.remove(值),但要找出它所在的索引,并删除该索引,或者在某些情况下删除所有索引值在

    ArrayList<String> list = new ArrayList<String>();
    // Random Content
    list.add("Apple");
    list.add("Banana");
    list.add("Plum");
    list.add("Orange");
    list.add("Apple");
    list.add("Pineapple");
    list.add("Peach");
    list.add("Plum");

    // Remove a value
    {
        String remove = "Apple";

        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).equals(remove)){
                list.remove(i);

                /*
                 * When we remove a value we have to iterate 1 index backwards,
                 * because the next value in the list is now shifted one index,
                 * so the list[i+1] becomes the new list[i], and in case it is the
                 * same value we have to check the new list[i] in addition, otherwise
                 * if we had two "Apple"s in a row, only the first 1 would get removed.
                 */

                i--;
            }
        }
    }