У меня есть класс CarLot, класс Car и класс CarLotApp для настройки GUI для него. CarLot - это ArrayList объектов Car. У меня есть методы в CarLot, которые выделяют CarLot на основе переменных экземпляра в Car (make, model, mpg и т. Д.)
Например:
public ArrayList<Car> getSortedDescMPG() {
ArrayList<Car> lotSortedByMPG = new ArrayList<Car>(myCars);
Car car;
for (Car c : lotSortedByMPG) {
double currentMax = c.getMPG();
car = c;
int currentMaxIndex = lotSortedByMPG.indexOf(c);
for (Car c2 : lotSortedByMPG) {
if (currentMax < c2.getMPG()) {
currentMax = c2.getMPG();
car = c2;
currentMaxIndex = lotSortedByMPG.indexOf(c2);
}
}
if (currentMaxIndex != lotSortedByMPG.indexOf(c)) {
lotSortedByMPG.set(currentMaxIndex, c);
lotSortedByMPG.set(lotSortedByMPG.indexOf(c), car);
}
}
return lotSortedByMPG;
}
Я пытаюсь получить отсортированный список в TextArea в CarLotApp. В CarLotApp у меня также есть три кнопки: одна для добавления автомобиля, одна для сортировки asc и одна для сортировки desc, а также поле со списком, чтобы выбрать переменную экземпляра для сортировки.
class SortDesc extends WidgetViewerActionEvent {
@Override
public void actionPerformed(ActionEvent event) {
txtrSortedCarLot.setText("");
if (cmbSortOptions.getSelectedIndex() == 0)
txtrSortedCarLot.setText(myCarLot.toString());
else if (cmbSortOptions.getSelectedIndex() == 1)
txtrSortedCarLot.setText(CarLot.toString(myCarLot.getSortedDescMPG()));
else if (cmbSortOptions.getSelectedIndex() == 2)
etc...
}
}
Основная проблема заключается в том, что списки ArrayLists, выпавшие из моих методов сортировки, вышли из строя. Я искал похожие посты, но все они были связаны с тем, который был сосредоточен на использовании компаратора для сортировки. Я хочу сделать это без использования отсеков. Так что тогда я действительно не знал, что искать, потому что для того, что я могу сказать, мои методы сортировки должны работать. Так что я не знаю, что я делаю не так.