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 multidimensions


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Service Delivery Manager

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut Trier un tableau multidimensions
    Bonjour à tous,

    Avant toutes choses, je vous prie de me pardonnez si ma question croule de non sens, ou si la réponse est évidente. Je debute a peine en developpement, avec Java comme premier langage, je manque donc cruellement de reflexe.

    J'ai actuellement un tableau à deux dimensions, l'une contenant des fichiers, l'autre leurs date de modification.

    Je souhaite pouvoir afficher le fichier modifié le plus lointain au plus recent.

    J'ai tenté de jouer avec la méthode arrays.sort, mais je reçois une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.String;
    	at java.util.Arrays.mergeSort(Unknown Source)
    	at java.util.Arrays.sort(Unknown Source)
    	at test.main(test.java:40)
    J'ai du mal à l'interpreter.

    Pourriez vous me donner quelques pistes ?

    Merci d'avance,

    YPFine

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Pour cela, il ne faut pas un tableau à 2 dimensions, mais un tableau à 1 dimension (ou une liste) d'objets instances d'une classe que tu nommes par exemple Fichier, qui contient les fichier avec leur date... et qui implémente l'interface Comparable<Fichier> pour pouvoir les comparer...

  3. #3
    Membre averti
    Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Service Delivery Manager

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut
    Bonjour,

    Merci de ta réponse, cependant ( étant encore trop debutant pour exploiter ta solution) je me suis tourner vers cette methode que j'ai trouver dans un bouquin et plus accessible pour moi :

    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
    	static int ouEstLePlusPetit(int debut) {
    		int indiceDuMin = debut , j ;
    		for (j = debut+0 ; j < tab.length ; j++) {
    			if(Integer.parseInt(tab[j][1]) < Integer.parseInt(tab[indiceDuMin][1])) {
    				indiceDuMin = j ;
    			}// Fin If
    		}// Fin For
    		return indiceDuMin ;
    	} // fin ouEstLePlusPetit()
     
    	static void classerParMoyenne() {
    		int indiceDuPlusPetit ;
    		String[] tmp = new String[2];
    		for (int i = 0 ; i < tab.length ; i++) {
    			indiceDuPlusPetit = ouEstLePlusPetit(i) ;
    			tmp[0] = tab[i][0] ;
    			tmp[1] = tab[i][1] ;
    			tab[i][0] = tab[indiceDuPlusPetit][0] ;
    			tab[i][1] = tab[indiceDuPlusPetit][1] ;
    			tab[indiceDuPlusPetit][0] = tmp[0] ;
    			tab[indiceDuPlusPetit][1] = tmp[1] ;
    		}// Fin For
    	}
    Merci cependant.

    YPFine

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Tu refais le code de tri, c'est pas très simple (surtout que c'est pas du quicksort)...

    Tu pourrais faire:
    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
    public class FichierAvecDate implements Comparable<FichierAvecDate> {
     
        private String fichier;
        private Calendar date;
     
        public FichierAvecDate(String fichier, Calendar date) {
            this.fichier = fichier;
            this.date = date;
        }
     
        public String getFichier() {
            return fichier;
        }
     
        public Calendar getDate() {
            return date;
        }
     
        public int compareTo(FichierAvecDate o) {
            int comp = date.compareTo(o.date);
            if(comp == 0)
                comp = fichier.compareTo(o.fichier);
            return comp;
        }
     
    }
    Une fois que tu as ça c'est tout simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    List<FichierAvecDate> list = new ArrayList<FichierAvecDate>();
    list.add(new FichierAvecDate("nomdufichier1", new GregorianCalendar(2007, Calendar.JANUARY, 5));
    list.add(new FichierAvecDate("nomdufichier2", new GregorianCalendar(2007, Calendar.JANUARY, 4));
    Collections.sort(list); // et voilà c'est trié

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

Discussions similaires

  1. [Débutant] Trier un tableau en 2 boucles
    Par SaladinDev dans le forum Assembleur
    Réponses: 9
    Dernier message: 07/05/2005, 22h38
  2. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 09h27
  3. [Débutant] Remplir et trier un tableau
    Par james-dean dans le forum Assembleur
    Réponses: 15
    Dernier message: 01/05/2005, 17h40
  4. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 00h04
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51

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