elninoca
Messages postés1Date d'inscriptionlundi 14 décembre 2009StatutMembreDernière intervention16 juin 2010
-
16 juin 2010 à 21:08
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
22 juin 2010 à 19:28
Bonsoir,
jai un probleme avec le tri insertion d une liste en java !!
jai cette liste :
Student s1 = new Student("patrick" , "b" , 444426160);
Student s2 = new Student("Andre" , "b" , 2426161);
Student s3 = new Student("Celine" , "a" , 3426162);
List<Student> l = new LinkedList<Student>();
l.add(s1);
l.add(s2);
l.add(s3);
voila le probleme :
on me demande de creer une classe qui contient l algorithme , de tri insertion , afin qu on puisse trier une liste d etudiant.
l algorithme commence par creer une nouvelle liste , puis on effectue les etapes necessaires pour trier l autre liste.
je n ai absolument aucune idee , comment implementer cet algorithme "tri Insertion "
, c est la premier fois que jai a faire avec des listes .
quelq'un peut m aider svp ?
j ai construit la classe " Student " : qui contient le nom , le prenom et le numero d un etudiant.
ensuite la classe CompareByNumber qui implemente l interface Comparator :
/**************************************************************************
import java.util.Comparator;
public class CompareByNumber implements Comparator<Student> {
public int compare(Student s1, Student s2) {
int result = 0;
Student stu1 = (Student) s1;
Student stu2 = (Student) s2;
if (stu1.studentNumber > stu2.studentNumber) {
result = 1;
return result;
} else
if (stu1.studentNumber < stu2.studentNumber) {
result = -1;
return result;
} else {
return 0;
}
}
}
el la , la classe CompareByLastname qui implemente elle aussi l interface Comparator<Student>
/**********************************************************************
import java.util.Comparator;
public class CompareByLastname implements Comparator<Student> {
Quelques remarques :
Au lieu de creer une fonction public int compare(Student s1, Student s2), tu devrais plutot surcharger compareTo dans la classe étudiant
//Classe Etudiant
public int compareTo(Student s2) {
int result = stu1.lastname.compareTo(stu2.lastname);
if (result == 0) {
result = stu1.name.compareTo(stu2.name);
}
return result;
}
Et comme ca, tu peux utiliser le compareTo sur tes étudiants. Qui plus est les lignes
Student stu1 = (Student) s1;
Student stu2 = (Student) s2;
Ne servent à rien et sont assez étranges, pourquoi un cast ici ? Et inutile de copier les références de tes varialbes
Ta fonction toString n'est pas géniale
public String toString() {
String str = null;
str = "" + Integer.toString(studentNumber);
str = name +" "+ lastname +" "+ str;
return str;
Il vaudrait mieux utiliser cette forme plus compacte
public String toString() {
return studentNumber+" "+name+" "+lastname;
return str;
Et une dernière chose, évite d'initialiser tes paramètres à null, ca pourrait te jouer des tours...