Cześć,
mam problem z prawidłowym posortowaniem kolejki. Chce posortować kolejkę priorytetową, najpierw samochody ciężarowe i sortowanie po przebiegu, następnie samochody osobowe i również posortowane po przebiegu. Zaś mój kod sortuję wszystkie elementy tylko po przebiegu. Ma ktoś jakiś pomysł?
Queue<Samochod> carsForRepairQueue = new PriorityQueue<>(new Comparator<Samochod>() {
@Override
public int compare(Samochod o1, Samochod o2) {
if (o1 instanceof SamochodCiezarowy) {
if (o1.getKilometrage() > o2.getKilometrage()) {
return -1;
} else if (o1.getKilometrage() < o2.getKilometrage()) {
return 1;
} else {
return 0;
}
} else if (o2 instanceof SamochodOsobowy) {
if (o1.getKilometrage() > o2.getKilometrage()) {
return -1;
} else if (o1.getKilometrage() < o2.getKilometrage()) {
return 1;
} else {
return 0;
}
}else {
return 0;
}
}
});
W konsoli otrzymuje:
O_sO5_Nissan, przebieg = 380000
O_sO3_Scoda, przebieg = 315000
C_Scania, przebieg = 300000
O_sO1_Fiat, przebieg = 300000
C_Mercedes-Benz, przebieg = 250000
powinienem mieć najpierw
C_Scania, przebiegiem = 300000
C_Mercedes-Benz = 250000
O_sO5_Nissan, przebieg = 380000
O_sO3_Scoda, przebieg = 315000
O_sO1_Fiat, przebieg = 300000
z góry dzięki za pomoc