数组列表删除索引

时间:2016-10-16 02:27:02

标签: java arraylist

我已经做了很多年了。我有一个数组列表,其中许多字符串在一个索引中。

(索引0)品牌是:日产颜色是:黑色ID是:KL1门是:4
(索引1)品牌是:福特颜色是:红色ID是:LL0门是:4

我希望用户只输入ID,它应该删除索引中的整个数据。 不幸的是Iterator在这里工作了。任何想法如何做到这一点?

3 个答案:

答案 0 :(得分:3)

OOP

使用基本的面向对象方法。

创建一个表示每行数据的类,包含四个成员字段:品牌,颜色,ID,门。

解析每一行文本以实例化该类的对象。收集List

中的对象

循环列表并询问每个对象的ID以匹配您想要的ID。

为了加快/删除项目的速度,请使用LinkedList而不是ArrayList作为List的实施。

答案 1 :(得分:0)

将数据存储在字符串中让我想起80年代的旧时光。遵循Basil Borque的建议,然后,为了避免并发修改,从数组的末尾开始。这样你可以从列表中删除并继续前一个,而不是下一个(这将导致异常)

答案 2 :(得分:0)

您应该创建包含与汽车相关的数据的类。以下面的代码为例。我使用了内部迭代列表的Java 8功能。

public class Main {
public static void main(String[] args){
    List<Car> list = new ArrayList<>(Arrays.asList(new Car("Nissan", "Black", "KL1", "4"),
            new Car("Ford", "Red", "LL0", "4")));

    String id = "KL1";
    list.removeIf(i -> i.getID().equals(id));
    list.forEach(System.out::println); // show the list after operation
}

static class Car {
    public final String Brand;
    public final String Colour;
    public final String ID;
    public final String Door;

    public Car(String brand, String colour, String ID, String door) {
        Brand = brand;
        Colour = colour;
        this.ID = ID;
        Door = door;
    }

    public String getBrand() {
        return Brand;
    }

    public String getColour() {
        return Colour;
    }

    public String getID() {
        return ID;
    }

    public String getDoor() {
        return Door;
    }
}

}

<强>更新

你也可以这样做

    public static void main(String[] args){
    List<Car> list = new ArrayList<>(Arrays.asList(new Car("Nissan", "Black", "KL1", "4"),
            new Car("Ford", "Red", "LL0", "4")));

    String id = "KL1";
    // Following code will find and remove the match from the list.
    // this for loop do exactly what it is doing "list.removeIf(i -> i.getID().equals(id));"
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i).getID().equals(id)) {
            list.remove(i);
            break;
        }
    }
}