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());
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager