IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Trier un tableau de plusieurs type de classes.


Sujet :

Collection et Stream Java

  1. #1
    storm_2000
    Invité(e)
    Par défaut Trier un tableau de plusieurs type de classes.
    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...

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Je ne comprends pas trop sur quel critère tu veux trier les éléments de ton tableau.

  3. #3
    storm_2000
    Invité(e)
    Par défaut
    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.

  4. #4
    Membre régulier Avatar de BoudBoulMan
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    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:
    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
    }
    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.
    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.

  5. #5
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(list.get(i).getClass().getName() == "package.A")
    Il vaut mieux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(list.get(i).getClass() == A.class)

  6. #6
    storm_2000
    Invité(e)
    Par défaut
    je suis désolé, mais j'ai oublié de préciser une chose.
    je doit utiliser une list et Collections.sort(nomListe).

  7. #7
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    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.

  8. #8
    storm_2000
    Invité(e)
    Par défaut
    d'accord. donc le mieux serait d'utiliser une classe abstraite ?

  9. #9
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    abstraite si tu veux (dans la mesure où tu ne manipules pas directement des instances de C), mais une classe en tous cas

Discussions similaires

  1. un tableau avec plusieurs types
    Par boumacmilan dans le forum Langage
    Réponses: 6
    Dernier message: 31/03/2010, 07h00
  2. Réponses: 35
    Dernier message: 28/10/2008, 10h11
  3. Réponses: 37
    Dernier message: 18/05/2008, 23h20
  4. "Tableau" avec plusieurs types de variables
    Par izguit dans le forum C++
    Réponses: 4
    Dernier message: 19/07/2007, 11h24
  5. Trier un tableau de type défini par l'utilisateur
    Par nonaparus dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/10/2005, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo