Tri personnalisé avec comparateur pour un tableau de données
Vous avez mentionné utiliser un tableau de données pour afficher les listes de voitures et vouloir les trier par couleur de voiture , pas par ordre alphabétique. Pour y parvenir, vous pouvez exploiter l'interface Comparator de Java.
Vous avez essayé d'utiliser Comparable et Comparator, mais cela semble autoriser uniquement le tri par ordre alphabétique. Voici une approche améliorée utilisant un comparateur personnalisé :
Commencez par définir une énumération pour les couleurs de voiture, comme suggéré :
public enum PaintColors { SILVER, BLUE, MAGENTA, RED }
Mettez à jour votre ColorComparator pour comparer en fonction de l'énumération PaintColors :
static class ColorComparator implements Comparator<Car> { public int compare(Car c1, Car c2) { return c1.getColor().compareTo(c2.getColor()); } }
Remplacez le champ de couleur String dans Car par PaintColors enum :
private PaintColors color;
Dans votre méthode principale, mettez à jour votre liste de voitures et triez à l'aide du comparateur personnalisé :
carList.add(new Car("Ford", PaintColors.SILVER)); ... Collections.sort(carList, new ColorComparator());
Cette approche utilise une énumération pour représenter les couleurs des voitures, vous permettant de définir un ordre de tri personnalisé dans la déclaration enum. Le ColorComparator utilise ensuite l'ordre défini pour trier efficacement la liste des voitures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!