Сеттеры на основе индекса массива в Java

У меня есть следующее:

public class  Car{
public Car()
{//some stuff
}
private Car [] carmodels  ;
public Car [] getCarModel() {
return this.carmodels;
}

public void setcarModel(Car [] carmodels ) {
this.carmodels = carmodels;

}

Сейчас в моем тестовом классе, у меня есть что-то вроде этого

public void main (String [] args)
 {
   Car car1= new Car();
   car.setcarModel(new Car[5]);//here i create an array of Car

   for(int i =0;i<5;i++)
   {
    // how can i created 5 cars and set them based on index i
    // car.setCarModel[new Car()]????
   }
 }

Как это сделать? Я мог бы использовать временный массив типа Car, который я могу передать своему Setter сразу после цикла. Но есть ли лучший способ?

4 ответа

Решение

Добавьте установщик, который принимает индекс:

public void setCarModel(int index, Car carModel) {
    this.cardmodels[index] = carModel;
}

Затем, внутри вашего цикла, позвоните

car.setCarModel(i, new Car());

Смотрите метод getCarModel? Этот метод возвращает Car[] право? Это означает, что вы можете делать с массивом все, что можете car1.getCarModel()!

Итак, как вы установите элемент по индексу массива? Ты делаешь это:

someArray[someIndex] = someValue;

Если мы применим это к массиву, возвращенному car1.getCarModel,

car1.getCarModel()[i] = new Car();

Это способ сделать это.

Кроме того, вы можете написать другой метод в Car который устанавливает элемент в массиве моделей автомобилей:

public void setItemInCarModels(int index, Car item) {
    carModels[index] = item;
}

Просто!

Кстати, ваша модель не имеет смысла...

Если вы настаиваете на том, чтобы не использовать временное значение в цикле for, вы можете использовать ArrayList вместо массива для кармоделей.

чем добавить метод

public void addCar(Car toadd)
{
     carmodels.add(toadd);
}

чем в вашей петле foor просто позвоните

for(int i =0;i<5;i++)
{
    car.addCar(new Car());
 }

Я предполагаю, что размер может варьироваться и что массив с фиксированным размером недостаточен.

for(int i =0;i<5;i++)
{
  car.getCarModel()[i] =new Car();
}

или же

Напишите другой перегруженный установщик, передав индекс.

public void setCarModel(int index, Car c)
{
 carmodels[index] = c;
}

for(int i =0;i<5;i++)
{
   car.setCarModel(i, new Car());
}
Другие вопросы по тегам