Позволяет определить простое 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? Что, если в списке нет машины и вызывается remove? и т. д. и т. д.).