Bonsoir, comme etant debutante en java
j'ai construit un arrayList dont les elements sont des objets de type arbre.
je veux faire le tri de cette liste selon arbre.champs
y a t-il une fonction predefinie qui le fait.
merci d'avance
![]()
Bonsoir, comme etant debutante en java
j'ai construit un arrayList dont les elements sont des objets de type arbre.
je veux faire le tri de cette liste selon arbre.champs
y a t-il une fonction predefinie qui le fait.
merci d'avance
![]()
Peut tu nous donner un peu de code , qu'es ce qu'est arbre.champs une string un int etc ?
mon champs c'est val
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Arbre { private Arbre succ; private Arbre [] pred; private int Numniveau;//niveau du noeud private int val;//le nom de la tache qui est 1 ou 2 ou 3
Ok ,
Donc tout d'abord ta classe Arbre doit implementer l'interface comparable .
tu fais donc une méthode compareTo dans ta classe Arbre :
ensuite tu crée ton arraylist , puis tu la trie avec " Collections.sort(list); "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Arbre implements Comparable<Arbre>{ private Arbre succ; private Arbre [] pred; private int Numniveau;//niveau du noeud private int val;//le nom de la tache qui est 1 ou 2 ou 3 public Arbre(int num) { this.val = num ; } @Override public int compareTo(Arbre a) { int resultat = 0; if (this.val > a.val) resultat = 1; if (this.val < a.val) resultat = -1; if (this.val == a.val) resultat = 0; return resultat; } @Override public String toString() { return "Arbre num : " + this.val ; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static void main(String[] args) { ArrayList<Arbre> list = new ArrayList<Arbre>(); list.add(new Arbre(10)); list.add(new Arbre(1)); list.add(new Arbre(22)); list.add(new Arbre(2)); System.out.println(list); Collections.sort(list); System.out.println(list); }
en fait tu peux laisser ta classe arbre tel quel est et faire appel a une classe de tri personnalisée comme suivant :
cette classe permet de definir le champs sur lequel tu veux te baser pour faire le tri , tu peux remplacer tonchamps par n'importe quel attribut de la classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Compare_tonchamps implements Comparator<Arbre>{ public int compare(Arbre o1,Arbre o2){ return o1.tonchamps.compareTo(o2.tonchamps); }
et ensuite il suffit juste de faire un tri comme suivant
et la liste sera trié selon l'attribut tonchamps
Code : Sélectionner tout - Visualiser dans une fenêtre à part Collections.sort(taListe, new Compare_tonchamps());
pour ton champs val qui est int on doit d'abord l'encapsuler dans un (WRAPPER) Integer car les types primitifs ne sont pas gérée c'est :
et pour le tri :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Compare_val implements Comparator<Arbre>{ public int compare(Arbre o1,Arbre o2){ Integer i = Integer.valueOf(o1.val); Integer j = Integer.valueOf(o2.val); return i.compareTo(j); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part Collections.sort(taListe, new Compare_val());
Partager