141 votes

classe Java implémente comparables

Pourquoi est-Java utilisé ? Pourquoi quelqu'un mettrait en œuvre dans une classe ? Je l’ai vu. que je me demande ce que c’est.

Quelqu'un peut me donner des exemple de la vie réelle quand vous implémenteriez comparables ?

218voto

Enno Shioji Points 12298

Voici un échantillon de la vie réelle. Notez que implémente également .

par la suite...

41voto

Steve B. Points 23227

Comparable définit un ordre naturel. Ce que cela signifie, c'est que vous êtes le définir quand un objet doit être considéré comme "inférieur" ou "supérieur à".

Supposons que vous avez un tas de nombres entiers et que vous souhaitez trier. C'est assez facile, il suffit de les placer dans une collection triée, droit?

TreeMap<Integer> m = new TreeMap<Integer>(); 
for (Integer i : myCollection)
...

Mais maintenant, supposons que j'ai un certain objet personnalisé, où le tri fait sens pour moi, mais n'est pas défini. Disons que, j'ai des données représentant des districts par code postal avec la densité de la population, et je tiens à les trier en fonction de la densité:

public class District {
  String zipcode; 
  Double populationDensity;
}

Maintenant la meilleure façon de les trier est de les définir avec un ordre naturel:

public class District implements Comparable<District>{
  String zipcode; 
  Double populationDensity;
  public int compareTo(District other)
  {
    return populationDensity.compareTo(other.populationDensity);
  }
}

Notez que vous pouvez faire l'équivalent de la chose par la définition d'un comparateur. La différence est que le comparateur définit l'ordre logique, par exemple, peut-être dans un processus séparé j'ai besoin de commander les mêmes objets par code postal - dans ce cas, la commande n'est pas nécessairement une propriété de l'objet, et il n'y a pas qu'un seul ordre naturel.

15voto

Qwerky Points 10847

Cité de la javadoc;

Cette interface impose un total de la commande sur les objets de chaque classe qui l'implémente. Cette commande est dénommée les de la classe naturelle de la commande, et de la classe compareTo la méthode est son naturel méthode de comparaison.

Les listes et les tableaux d'objets qui implémenter cette interface peut être triée automatiquement par les Collections.trier (et Les tableaux de.le tri). Les objets qui implémentent cette interface peut être utilisée comme clés dans une triés à la carte ou sous forme d'éléments d'un ensemble trié, sans la nécessité de spécifiez un comparateur.

Edit: ..et fait les bits importants en gras.

9voto

Amir Rachum Points 13236

Le fait qu’une classe implémente `` signifie que vous pouvez prendre deux objets de cette classe et de les comparer. Certaines classes, comme certaines collections (fonction de tri dans une collection) qui empêchent les objets dans l’ordre s’appuient sur eux étant comparables (afin de trier, vous devez savoir quel objet est le « plus grand » et ainsi de suite).

8voto

arviman Points 1663

La plupart des exemples ci-dessus montre comment réutiliser un objet comparable existant dans la fonction compareTo. Si vous souhaitez implémenter votre propre compareTo lorsque vous souhaitez comparer deux objets de même catégorie, dire un AirlineTicket objet que vous souhaitez trier par prix (moins est classé au premier rang), suivie par nombre d’escale (encore une fois, moins est classé au premier rang) , vous feriez ce qui suit :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X