Java でネイティブ クエリを使用して、車両の順序付きリストを取得しようとしています。
私は 2 つの方法を使用しています。1 つ目は車両を取得する方法で、2 つ目はリストを並べ替える方法です。
次のエラーが表示されます。
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.set(AbstractList.java:132)
at java.util.AbstractList$ListItr.set(AbstractList.java:426)
at java.util.Collections.sort(Collections.java:159)
at Exercici4.AzizElamraniOrdreMatricula(Exercici4.java:246)
at Exercici4.main(Exercici4.java:45)
これが私のコードです:
private static final String BBDDFITXER = "fitxer";
public static void main(String[] args)
{
new File(BBDDFITXER).delete();
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), BBDDFITXER);
try {
Cotxe c3 = new Cotxe("B1432-hk", 10000, true);
Cotxe c1 = new Cotxe("B54w2-hk", 566666, true);
Cotxe c2 = new Cotxe("Bwc345-ABC", 13456, true);
Cotxe c4 = new Cotxe("Ba432th", 10000, true);
Moto m1 = new Moto("B5756474", 1000, 500);
Moto m2 = new Moto("6575-YT", 2345454, 250);
db.store(c3);
db.store(c1);
db.store(c2);
db.store(c4);
db.store(m1);
db.store(m2);
List<Vehicle> vehicles = AzizElamraniOrdreMatricula(db);
consultaVehicles(vehicles);
}finally{
db.close();
}
}
public static List<Vehicle> AzizElamraniNQ3(ObjectContainer db)
{
List<Vehicle> vehicles = db.query(new Predicate<Vehicle>()
{
public boolean match(Vehicle vehicle) {
return vehicle.getKm() < 50000
&& vehicle.getMatricula().startsWith("B");
}
});
return vehicles;
}
public static void consultaVehicles(List<Vehicle> vehicles) {
System.out.println("total: " + vehicles.size());
for (Vehicle v : vehicles) {
System.out.println(v.infoVehicle());
}
}
public static List<Vehicle> AzizElamraniOrdreMatricula(ObjectContainer db) {
List<Vehicle> vehiclesdes = AzizElamraniNQ3(db);
Collections.sort(vehiclesdes);
return vehiclesdes;
}
私は何を間違っていますか?