Arrays.sort() précision fonctionnement
Bonjour, je désire trier un tableau d'objets Tri (constructeur String) -->
- implémentation de Comparable
- redéfinition de compareTo()
Ce que je voudrais comprendre :
a) - Je redéfinis complètement CompareTo : NOT OK
b) - Je redéfinis CompareTo avec return : OK
return lettre.compareTo(t.getLettre());
POURQUOI b) fonctionne et pas a) ?
c) - d'autant que ds le cas d'un tableau d'objets (constructeur int)
le a) fonctionne
Merci de m"éclairer
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
package tableau_2;
import java.util.Arrays;
class Tri implements Comparable<Tri>{
String lettre;
Tri (String lettre){
this.lettre = lettre;
}
public String getLettre(){
return lettre;
}
public int compareTo(Tri t) {
// a) NOT OK
//**********
if ((this.lettre) < (t.getLettre()))
return -1;
else if ((this.lettre) > (t.getLettre()))
return 1;
else
return 0;
// b) OK
//********
return lettre.compareTo(t.getLettre());
}
}
public class Arrays_Tableau_sort {
public static void main(String[] args) {
Tri tri0 = new Tri ("a");
Tri tri1 = new Tri ("c");
Tri tri2 = new Tri ("b");
Tri tri3 = new Tri ("d");
Tri[]objets = {tri0,tri1,tri2,tri3};
Arrays.sort(objets);
System.out.println("Apres tri" + Arrays.toString(objets));
}
} |