我在前三个索引中有一个字符串类型的数组列表,我有一辆类似的车的细节
类似地,在接下来的三个索引中,我还提供了另一辆车的详细信息。 现在,我要删除一辆车的详细信息。我应该怎么做。 例如,我有一个名为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;
}
}
答案 0 :(得分:0)
您可以像这样从所有arrayList中删除特定位置:-
ArrayList<String> firstList = new ArrayList<>();
ArrayList<String> secondList = new ArrayList<>();
ArrayList<String> ThirdList = new ArrayList<>();
firstList.add("first");
firstList.add("two");
firstList.add("three");
firstList.add("four");
secondList.add("first");
secondList.add("two");
secondList.add("three");
secondList.add("four");
ThirdList.add("first");
ThirdList.add("two");
ThirdList.add("three");
ThirdList.add("four");
String value = "three";
int pos = firstList.indexOf(value);
firstList.remove(pos);
secondList.remove(pos);
ThirdList.remove(pos);
答案 1 :(得分:0)
它仅删除第一个值,因为它是唯一满足if语句要求的值。如果要删除它们,则只需要改进if语句或删除它即可。
实际上,您正在做的是"abc".equals(value)
,并且此验证仅在第一个元素中为true。
注意:由于您正在使用Kotlin,因此此处的一个好习惯是将您的列表转换为MutableList()
并使用removeAll()
function from Kotlin
编辑
如果应该删除所有元素,则还需要删除break;
。
答案 2 :(得分:0)
让我们定义一个简单的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 CarList {
void addCar(Car car);
void removeCar(Car car);
void removeAll();
}
使用List<String>
实现来实现此接口,该实现遵循与上述问题相同的规则。
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,该怎么办?如果car呢?列表中不存在,并称为remove?等)。