gpt4 book ai didi

java - 如何使用数组列表上的迭代器根据一个条件从数组列表中删除特定值及其接下来的两个值?

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:48 24 4
gpt4 key购买 nike

我在前三个索引中有一个字符串类型的数组列表,我有一辆汽车的详细信息,例如

  • 汽车名称
  • 型号
  • 价格

类似地,在接下来的三个索引中,我有另一辆车的详细信息。现在我想删除一辆车的详细信息。我该怎么做呢。例如我有一个名为 carinfo 的列表

carinfo.add("abc");
carinfo.add("xyz");
carinfo.add("someprice");

我使用了 iterator.remove 但我可以使用 if 语句仅删除第一个值汽车名称。我还想删除接下来的两个值。请帮助我。

Iterator<String> iterator = a.iterator();
while(iterator.hasNext())
{
String value = iterator.next();
if ("abc".equals(value))
{
iterator.remove();
break;
}
}

最佳答案

让我们定义一个简单的Car .

class Car {
String name = "";
String model = "";
String price = "";

public Car(String name, String model, String price) {
this.name = name;
this.model = model;
this.price = price;
}
}

声明一个将充当我们的汽车列表的接口(interface)。

interface CarList {
void addCar(Car car);
void removeCar(Car car);
void removeAll();
}

使用 List<String> 实现此接口(interface)实现遵循与问题中提到的相同规则。

class MyCarList implements CarList {

private final List<String> storage = new ArrayList<>();

@Override
public void addCar(Car car) {
storage.add(car.name);
storage.add(car.model);
storage.add(car.price);
}

@Override
public void removeCar(Car car) {
int index = storage.indexOf(car.name);

// Remove car name at index.
storage.remove(index);
// index+1 item (model) is now index, call remove on `index` again.
storage.remove(index);
// index+1 item (price) is now index, call remove on `index` again.
storage.remove(index);
}

@Override
public void removeAll() {
storage.clear();
}

@NonNull
@Override
public String toString() {
return storage.toString();
}
}

示例运行

    Car car1 = new Car("car1-name", "car1-model", "car1-price");
Car car2 = new Car("car2-name", "car2-model", "car2-price");
Car car3 = new Car("car3-name", "car3-model", "car3-price");

CarList carList = new MyCarList();
carList.addCar(car1);
carList.addCar(car2);
carList.addCar(car3);
System.out.println(carList);
//OUTPUT: [car1-name, car1-model, car1-price, car2-name, car2-model, car2-price, car3-name, car3-model, car3-price]

carList.removeCar(car2);
System.out.println(carList);
//OUTPUT: [car1-name, car1-model, car1-price, car3-name, car3-model, car3-price]

carList.removeCar(car1);
System.out.println(carList);
//OUTPUT: [car3-name, car3-model, car3-price]

carList.removeCar(car3);
System.out.println(carList);
//OUTPUT: []

carList.addCar(car2);
System.out.println(carList);
//OUTPUT: [car2-name, car2-model, car2-price]

注意代码缺少空检查和边缘情况(当调用remove时,如果传递的汽车为空怎么办?如果列表为空并且调用remove怎么办?如果列表中不存在汽车并且调用remove怎么办?等等)。

关于java - 如何使用数组列表上的迭代器根据一个条件从数组列表中删除特定值及其接下来的两个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com