Ich bekomme einen Nullzeiger, bin mit den Vergleichsmethoden nicht vertraut und versuche herauszufinden, wo ich falsch liege. Die Idee ist, nach der Anzahl der verkauften Produkte zu sortieren und dann die Top 5 Produkte zu verkaufen. Es gibt einen NullPointer zurück, sobald ich die Vergleichsmethoden implementiert habe.Liste nach Objekt sortieren
public Result index() {
// Get list of all categories in ascending order
String name = "Best Sellers";
List<Category> categoriesList = Category.findAll();
List<Product> productsList;
Long cat = new Long("11");
productsList = bestSellers();
return ok(index.render(env, categoriesList, productsList, cat, "", getCurrentUser(), name));
}
public List<Product> bestSellers(){
List<Product> temp = Product.findAll("");
Collections.sort(temp, new Comparator<Product>() {
@Override
public int compare(Product p1, Product p2) {
if(p1.getCopiesSold()>p2.getCopiesSold()){
return 1;
} else if(p1.getCopiesSold()<p2.getCopiesSold()){
return -1;
}
return 0;
}
});
List<Product> bestSellers = new ArrayList<>();
for(int i=0; i<5; i++){
bestSellers.add(temp.get(i));
}
return bestSellers;
}
Mein Getter wurde Rückkehr für einige Elemente null, die noch einen Kauf haben haben, so musste ich einfach einen Scheck für null hinzufügen und alles funktioniert.
können Sie das Fehlerprotokoll buchen? –
auch, was soll das tun -> Product.findAll (""); ? –
es gibt auch einen Fehler in Ihrem Vergleich, der else wenn soll sein -> sonst if (p1.getCopiesSold()