2015-12-12 1 views
0

La procédure:une interface comparable séparée de tri pour les instances

1) Je veux montrer tous les bus d'abord, et puis taxi.

2) Ensuite, je voudrais trier tous les bus ou taxis par modèle, marque, prix par ordre alphabétique ou par ordre croissant.

Question:

1) Comment puis-je afficher les enregistrements de bus et premiers dossiers de taxi derrière.

2) Je ne sais pas comment trier uniquement les enregistrements de bus ou de taxi par leur paramètre. (j'avais l'habitude de trier tous les enregistrements ensemble.Il me rend fou)

3) Plus important, dois-je seulement faire le tri avec la superclasse "classe Car implements comparables"? une classe n'en a qu'une "public int compareTo (Car other)"?

Le résultat attendu devrait être:

(De nombreux enregistrements différents pour bus ------ pas encore classée)

Modèle:

Marque:

Prix:

numéro de téléphone:

(De nombreux dossiers différents pour le taxi --- pas encore triés)

Modèle:

Marque:

Prix:

couleur:

public static void main(String[] args) { 
    ArrayList<Car> tablets = new ArrayList<Car>(); 

    .....something ignored.... 


    Collections.sort(Car); 

    for (Car cars : Car) { 
     System.out.println(Car); 
    } 



class Car implements comparable <Car> 
{ 
private String Model; 
private String Brand; 
private int Price; 
public Car (String Model , String Brand , int Price) 
{ 
    this.Model = Model; 
    this.Brand = Brand; 
    this.Price = Price; 
} 


.....Some Get and PrintInfo Method here..... 


     public int compareTo (Car other) 
     { 
     } 
} 


    class bus extends Car 
    { 
    Private String colour; 
    public bus ((String Model , String Brand , int Price , String colour) 
    { 
     super (Model, Brand, Price); 
     this.colour= colour; 
    } 

    .......some Get and PrintInfo method here...... 


    } 


    class taxi extend Car 
    { 
    private int numberofdoor; 
    public bus (String Model , String Brand , int Price , int numberofdoor) 
    { 
     super ( Model , Brand , Price); 
     this.numberofdoor = numberofdoor; 
    } 


    .......some Get and PrintInfo method here...... 
    } 
+0

Quelqu'un peut-il aider? – Kindess

Répondre

0

Vous pouvez utiliser votre propre Comparateur comme ceci:

Collections.sort(cars, new Comparator<Car>() { 
    @Override 
    public int compare(Car car1, Car car2) { 
     // Both objects are belongs same class 
     if (car1 instanceof Bus && car2 instanceof Bus || 
        car1 instanceof Taxi && car2 instanceof Taxi) { 
      // Here compare some property, e.g. model property: 
      return car1.getModel().compareTo(car2.getModel()); 
     } else { 
      // Here we say that Taxi object greater than Bus object 
      return car1 instanceof Taxi ? 1 : -1; 
     } 
    } 
});