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 :

Tri tableau de tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Par défaut Tri tableau de tableau
    Bonjour, je vous soumets un problème qui me retourne la tête ...

    Je dispose d'un tableau de tableau soit un String [][]
    Je dois le trier par ordre alphabétique sur une colonne au choix.

    Exemple (un String [3][3]) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [0][0] def [0][1] def [0][2] ghi
    [1][0] abc [1][1] ghi [1][2] jkl
    [2][0] ghi [2][1] abc [2][2] abc
    Admettons que je souhaite trier sur la colonne 1 (en gras), je dois obtenir ce qui suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [0][0] ghi [0][1] abc [0][2] abc
    [1][0] def [1][1] def [1][2] ghi
    [2][0] abc [2][1] ghi [2][2] jkl
    Si quelqu'un a une idée ou une question, je suis tout ouïe !

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il suffit d'utiliser la méthode Arrays.sort() et de lui spécifier le Comparator qui va bien (c'est à dire qui compare deux String[] en se basant sur leurs colonne 1) :

    Exemple Java 5.0 :
    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
    31
    32
    	String[][] array = {
    			{ "def", "def", "ghi" },
    			{ "abc", "ghi", "jkl" },
    			{ "ghi", "abc", "abc" },
    	};
     
    	// Affichage du tableau :
    	for (int i=0; i<array.length; i++) {
    		for (int j=0; j<array[i].length; j++) {
    			System.out.printf("[%d][%d] %s ", i, j, array[i][j]);
    		}
    		System.out.println();
    	}
    	System.out.println();
     
     
    	// Tri du tableau :
    	Arrays.sort(array, new Comparator<String[]>(){
    		public int compare(String[] o1, String[] o2) {
    			return o1[1].compareTo(o2[1]);
    		}
    	});
     
     
    	// Affichage du tableau :
    	for (int i=0; i<array.length; i++) {
    		for (int j=0; j<array[i].length; j++) {
    			System.out.printf("[%d][%d] %s ", i, j, array[i][j]);
    		}
    		System.out.println();
    	}
    	System.out.println();
    a++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Par défaut
    Bonjour, c'est donc un problème d'algorithme que tu as?

    Si c'est ça essaie au moins de trouver le début et nous t'aiderons ensuite.
    Bon courage

  4. #4
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Par défaut
    Merci adiGuba, j'y avais songé. Etant donné que le java 1.4 m'est imposé et qu'il n'accepte pas le comparateur paramétré, as-tu une alternative ?
    Sinon, ce n'est pas grave, je vais fouiller dans ce sens.

  5. #5
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Le comparateur en java 1.4 est le même, sauf qu'il n'est pas typé et doit donc faire des cast d'Object vers String[]

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fnobb Voir le message
    Le comparateur en java 1.4 est le même, sauf qu'il n'est pas typé et doit donc faire des cast d'Object vers String[]
    +1 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	// Tri du tableau :
    	Arrays.sort(array, new Comparator(){
    		public int compare(Object o1, Object o2) {
    			String[] s1 = (String[]) o1;
    			String[] s2 = (String[]) o2;
    			return s1[1].compareTo(s2[1]);
    		}
    	});
    Bien sûr ce code (comme le précédent) ne prend pas en charge les valeurs null et les tableaux de tailles inférieurs...

    a++

  7. #7
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Par défaut
    Merci à tous les 2 !
    Il ne me reste plus qu'à l'adapter mais l'idée est parfaite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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