Si vous souhaitez trier, vous pouvez utiliser TreeSet au lieu de HashSet, mais parfois vous souhaitez donner votre propre ordre d'origine. Comparator et Compareable sont efficaces dans un tel cas.
Comparable
java.lang.Comparable
Myclass.java
class MyClass implements Comparable<Myclass>{
//Implémentation de méthodes abstraites
public int compareTo(Myclass obj){
return this.id - obj.id;
}
}
//ordre croissant
Comparator Interface java.util.Comparator "Comparateur" La motivation pour utiliser Comparator est lorsque vous souhaitez modifier l'ordre de tri des éléments stockés dans TreeSet, TreeMap, etc. dans un ordre différent de celui par défaut.
Myclass.java
class Myclass implements Comparator<String>{
@Override
public int compare(String obj1, String obj2){
return obj1.length() - obj2.length();
}
}
//ordre croissant
constructeur | La description |
---|---|
TreeSet(Comparator<? super E> comparator) | Crée un nouvel ensemble d'arbres vide trié selon le comparateur spécifié |
Le TreeSet déclare un constructeur qui prend un objet Comparator comme argument (décrit dans OraDocs), donc n'importe quel ordre de tri peut être appliqué.
Comparable "Comparez-vous avec d'autres objets" Comparateur "Compare deux autres objets" (Remarque: les définitions de TreeSet et TreeMap peuvent être vagues plutôt que déroutantes pour Compareable et Comparator)