Bonjour, j'aimerais savoir comment faire pour trier un tableau d'objet.
Sachant que :
- J'ai deux classe A et B qui implements C.
- J'ai ma List d'objet C.
- J'aimerais classer : les B en premier les A ensuite. comment faire ? merci...
Bonjour, j'aimerais savoir comment faire pour trier un tableau d'objet.
Sachant que :
- J'ai deux classe A et B qui implements C.
- J'ai ma List d'objet C.
- J'aimerais classer : les B en premier les A ensuite. comment faire ? merci...
Je ne comprends pas trop sur quel critère tu veux trier les éléments de ton tableau.
En faite c'est compliqué.
J'ai ca en gros :
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 public interface C { } public class A { } public class B { List<C> list } public class D { private B root ; }
Voilà en gros ce que j'ai.
Ce que j'aimerais, c'est pour chaque niveau. C'est mettre les objet de type B en 1er et ensuite les objet de type A.
La classe Class fournit une méthode qui permet de trouver le nom de la classe d'un objet: Class.getName()
Et pour trouver l'objet Class d'un objet, il faut utiliser la méthode getClass() de la classe Object.
Dans ton cas, il faudrat donc faire:
Ensuite pour le tri, tu peux par exemples créer deux tableaux, l'un contiendra les objets A, l'autre les objets B. En parcourant la liste tu stockes les objets dans le tableau adéquat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int i; //position dans la liste if(list.get(i).getClass().getName() == "package.A"){ //actions pour classe A }else if(list.get(i).getClass().getName() == "package.B"){ //actions pour classe B }
Après, tu n'as qu'à vider la liste et la remplir par le tableau des objets B d'abord, puis avec le tableau des objets A.
Il vaut mieux écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(list.get(i).getClass().getName() == "package.A")
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(list.get(i).getClass() == A.class)
je suis désolé, mais j'ai oublié de préciser une chose.
je doit utiliser une list et Collections.sort(nomListe).
Pour ton problème, il faut que C implémente Comparable pour pouvoir utiliser le sort après, ça doit donc être une classe et non une interface.
Ensuite A et B doivent hériter de C au lieu de l'implémenter du coup. Dans ta méthode compareTo dans C tu renvoies ce qu'il faut selon que tes Objets sont de classe A ou B.
d'accord. donc le mieux serait d'utiliser une classe abstraite ?
abstraite si tu veux (dans la mesure où tu ne manipules pas directement des instances de C), mais une classe en tous cas
Partager