Les Collections.trier() en utilisant un comparateur?
import java.util.*;
public class C_2 {
public static void main(String args[]) {
String theStrings[] = { "x", "a", "b", "c", "d" };
List l = Arrays.asList(theStrings);
Collections.sort(l); //line a
Collections.sort(l, new ThisIsMyThing()); //line b
System.out.println(l);
}
}
class ThisIsMyThing implements Comparator {
public int compare(Object o1, Object o2) {
String s1 = (String)o1;
String s2 = (String)o2;
return -1 * s1.compareTo(s2);
}
}
Je comprends que la classe C_2
ne tri basée sur deux techniques différentes.
L'une est la norme Collections.sort(l);
Et l'autre est Collections.sort(l,Comparator<>());
je ne suis pas en mesure de comprendre cette méthode de tri. Quelqu'un peut-pourriez-vous m'expliquer?
Ce que tu ne comprends pas? Avez-vous lu la documentation?
Les Collections.de tri(l) // ligne un ce tri de la liste selon l'ordre naturel, le droit? Les Collections.de tri(l, nouveau ThisIsMyThing()); // ligne b met en œuvre un traitement de référence, où les paramètres sont de type object. puis subissent une conversion de type string. La comparaison est faite entre les cordes?
Oui. Notez que vous devez être à l'aide de médicaments génériques.
Les Collections.de tri(l) // ligne un ce tri de la liste selon l'ordre naturel, le droit? Les Collections.de tri(l, nouveau ThisIsMyThing()); // ligne b met en œuvre un traitement de référence, où les paramètres sont de type object. puis subissent une conversion de type string. La comparaison est faite entre les cordes?
Oui. Notez que vous devez être à l'aide de médicaments génériques.
OriginalL'auteur hakuna12 | 2013-10-30
Vous devez vous connecter pour publier un commentaire.
Collection.sort(l)
suppose que le contenu del
sontComparable
.Collection.sort(1, Comparator)
utilise un custom comparateur pour comparer le contenu del
, c'est ce que vous avez fait. L'idée même de tri (y compris lessort()
méthode) implique que les objets DOIVENT être comparables - dans ce cas, soit avecComparable
ouComparator
.Noter que de nombreux objets Java sont comparables déjà, y compris les
String
,Date
etNumber
. Pour ceux-ci, vous pouvez simplement utiliserCollection.sort(someList);
Exemple
Dire que vous avez un
Circle
classeSi vous avez créé 100
Circle
objets:Vous ne pouvez pas trier parce que Java n'a aucune idée de comment les comparer. Vous avez à dire à Java:
Avec le
compareTo()
méthode dans la classe Circle, Java sait maintenant comment les comparer et les trier.Vous pouvez désormais le faire:
accepte uniquement un
List
argument.Mais même la version révisée n'est pas true.
Collections.sort
est une méthode statique sur leCollections
classe qui n'accepte qu'unList
argument. Aucun classe peut invoquerCollections.sort
, si elle met en œuvreCollection
ou pas, mais peu importe qui l'invoque, seulement unList
argument peut être transmis.OriginalL'auteur Paul Samsotha
Collections.trier qui prend comparateur de trie la Liste basée sur le Comparateur fournies par vous et les autres suit naturelle ordre de tri.C'est si vous voulez suivre toute personnalisés ordre de tri, puis utiliser cette méthode. Et de rien beaucoup à expliquer.
Utilisez ce lien pour l'explication.
OriginalL'auteur Shoaib Chikate
Tri d'une collection est réalisée à partir des Collections.de tri(Collecte) à trier vos valeurs. Cette méthode est pour ceux qui implémente
Comparable
interface. Cette interface définit la méthodecompare
qui effectue la comparaison par paires des éléments et renvoie -1 si l'élément est plus petit que le rapport de l'élément, 0 si elle est égale et 1 si elle est plus grande. Un exemple courant est la classe Integer.Si les éléments à trier différemment, vous pouvez définir votre propre mise en œuvre, basé sur la
Comparator
interface.Cette approche est que vous puis trier n'importe quel objet par un attribut ou même d'une combinaison d'attributs. Par exemple, si vous avez des objets de type Personne avec un attribut de revenu et dateOfBirth vous pouvez définir différentes implémentations de Comparaison et de trier les objets en fonction de vos besoins.OriginalL'auteur shikjohari