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

Langage Java Discussion :

Sort avec un type objet


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut Sort avec un type objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int tab[] = { 1 , 5 , 4 , 2 , 3 } ;
    int pos ;
    Arrays.sort ( tab ) ;
    La fonction sort avec Le tableau tab de type entiers sa marche bien mais je n’arrive pas a trier un tableau de type objet,


    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
    public void fermerCompte(int numero)
    	{
    		for(int i=0;i<nbrCompte;i++)
    		{
    			if(listeCompte[i].getNumero()==numero)
    			{
    				listeCompte[i]=listeCompte[nbrCompte-1];
    			nbrCompte--;
    			return;
    			}
    			//Arrays.sort(listeCompte);
     
    		// le dérnier compte craser le numero compte trouvé
     
    		}
     
    			{	
    		System.out.println("compte not found, erreur compte non existant");
    			}		
    	}
    Erreur de type code inaccessible, j’ai essai de convertie le tbleau au type string mais sa marche pas

  2. #2
    Membre expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Par défaut
    Salut

    Arrays.sort(xxx []) fonctionne avec un tableau d'élément alors que tu lui transmet une chaine :
    Arrays.sort(listeCompte.toString());

    Dans ton cas c'est probablement la méthode Arraya.sort(Object []) qui s'applique donc: Arrays.sort(listeCompte). Attention, les object du tableau doivent implémenter l'interface Comparable. Dans le cas contraire, il faut utiliser un objet Comparator : Arrays.sort(Object[], Comparator comp);

  3. #3
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Merci jibbi mais S.V.P pouvez vous m’expliquer mieux :=)
    Si possible de me citer un exemple pour trie un tableau de type objet :=)

  4. #4
    Membre expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Par défaut
    D'abord la Classe ArraysOverload la méthode sort() pour que l'on puisse l'utiliser avec des types de tableau différent: int[], float[], Object[]....

    Pour les types de base comme les int, il n'y a pas de problème, la méthode peut facilement trouver l'odre naturel des éléments.

    Pour les tableau d'Object, l'objet doit implémenter l'interface Comparable pour en faire le tri. C'est le cas pour les String par exemple.

    Donc si tu cré une Classe tu doit implementer l'interface Comparable pour utiliser Arrays.sort() .L'autre méthode est de créer une classe qui implémente Comparator.
    (C'est valide aussi pour Collections.sort(List list)).

    Ex:

    Une classe rudimentaire qui représente un article dans un magasin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Article {
     
    public float prix = 0.0f;
    public String name = "Aucun";
     
    //** constructor */
    public Article(String name, float prix){
    this.name = name;
    this.prix = prix;
    }
     
    }
    Utilisation de Comparator
    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
     
    Article [] tabArticle; // tableau qui contient des object Article
    //... remplir le tableau
     
    // class qui permet de faire le tri selon le prix;
    class PriceComparator implements Comparator{
    // retourne -1 si <;  0 si égale;  +1 si >.
    public int compare(Object t1, Object t2){
    Article a1 = (Article) t1;
    Article a2 = (Article) t2;
    return (a2.prix > a1.prix ? 1: (a1.prix == a2.prix ? 0: -1));
    }
    }
     
    // class annonyme qui permet de faire le tri selon le name de L'article
    Comparator NameComparator = new Comparator(){
    public int compare(Object t1, Object t2){
    Article a1 = (Article) t1;
    Article a2 = (Article) t2;
    return (a2.name > a1.name ? 1: (a1.name == a2.name ? 0: -1));
    }
    }
     
    //... faire le tri
     
    Arrays.sort(tabArticle, new PriceComparator());// les articles du tableau sont trié selon le prix
    Arrays.sort(tabArticle, NameComparator); //Tri selon le nom
    Un problème avec cette ligne?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return (a2.name > a1.name ? 1: (a1.name == a2.name ? 0: -1));
    Deux opérateurs ternary ( ? : ) imbriqué qui est l'équivalent de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (a2.name > a1.name)
    return 1;
    else if (a1.name == a2.name)
    return 0;
    else return -1;
    Notez que je ne rien compilé donc il pourrait bien y avoir quelques erreurs

Discussions similaires

  1. Fonction avec un type objet en entree
    Par rub12 dans le forum C++
    Réponses: 2
    Dernier message: 29/01/2015, 17h30
  2. Objet requis avec Variable type
    Par Stromber dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/04/2013, 15h56
  3. Réponses: 3
    Dernier message: 10/03/2011, 11h49
  4. caster un objet avec un type generique ?
    Par rimas2009 dans le forum Général Java
    Réponses: 4
    Dernier message: 16/06/2009, 14h39
  5. Problème avec une variable de type objet
    Par mrocks dans le forum C#
    Réponses: 7
    Dernier message: 09/05/2009, 22h27

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