Wpis z mikrobloga

#java #hashset #sortowanie

Mam listę obiektów Vehicle (obiekty tworzę w klasach Car/Bus/itd.. które rozszerzają klasę Vehicle):

public abstract class Vehicle {
protected String regNo;
protected String producer;
protected String model;
protected boolean isVehicleRented;
}

Trzymam w wypożyczalni całą listę aut w HashSet:

public class RentalApp {
private static Collection carList = new HashSet<>();

Teraz chciałbym wydrukować listę aut sortowaną według numeru rejestracyjnego (String regNo).

Próbuję to zrobić tak:

private static void printRentalHistory() {
TreeSet sortedCarList = new TreeSet();
sortedCarList.addAll(carList);

for (Vehicle s : sortedCarList) {
s.printRentalDates();
}
}

Tyle, że wali błędem:

Exception in thread "main" java.lang.ClassCastException: Car cannot be cast to java.lang.Comparable
Jak zrobić to sprytnie? Doczytałem, że powinienem dopisać comparator przy tworzeniu TreeSetu, ale nie jestem przekonany że idę dobrą drogą. Da się to zrobić prościej / sprytniej?
  • 3