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 :

ArrayList deux dimensions


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 26
    Par défaut ArrayList deux dimensions
    Bonjour,

    Je veux savoir s'il y'a une possibilité de trier les lignes d'une Arraylist deux dimensions selon une seule colonne.

    Merci de me donner un exemple de Code.

    Merci d'avance,

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour, voici un exemple avec un arraylist comprenant 2 colonnes. On utilise Collections.sort() pour trier la 2nde colonne.

    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
    33
    34
    35
    36
    37
    38
    39
    40
     
    import java.util.ArrayList;
    import java.util.Collections;
     
    public class TestArray {
     
    	static ArrayList<ArrayList<Integer>> tab = new ArrayList<ArrayList<Integer>>();
     
    	public static void main (String[] args) {
    		ArrayList<Integer> colonne1 = new ArrayList<Integer>();
    		colonne1.add(1);
    		colonne1.add(2);
    		colonne1.add(3);
    		colonne1.add(4);
    		colonne1.add(5);
    		ArrayList<Integer> colonne2 = new ArrayList<Integer>();
    		colonne2.add(12);
    		colonne2.add(8);
    		colonne2.add(5);
    		colonne2.add(14);
    		colonne2.add(2);
    		tab.add(colonne1);
    		tab.add(colonne2);
    		afficher(tab);
    		Collections.sort(tab.get(1));
    		afficher(tab);
    	}
     
     
     
    	public static void afficher(ArrayList<ArrayList<Integer>> tab) {
    		System.out.println();
    		for(int i = 0; i<5;i++) {
    			for(int j = 0;j<2;j++) {
    				System.out.print(tab.get(j).get(i) + " ");
    			}
    			System.out.println();
    		}
    	}
    }

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 26
    Par défaut
    Merci pour votre réponse,

    Ce programme tri les deux colonnes à la fois ou une seule colonne.

    Moi ce que je veux c'est qu'il tri une seule colonne mais il garde le même classement par exemple si j'ai un tableau comme ça

    4 | 15
    3 | 20
    2 | 14
    1 | 50

    Après le tri il deviendra comme ça :

    1 | 50
    2 | 14
    3 | 20
    4 | 15


    Merci d'avance,

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 26
    Par défaut
    Aussi une question,

    J'ai une ArrayList et un tableau sous forme Object

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ArrayList<Integer> sdouble_personne_trie = new ArrayList<Integer>();
     
    Object[][] tableau = {
                {nbr.get(0), new Integer(sdouble_personne.get(0))},
                {nbr.get(1), new Integer(sdouble_personne.get(1))},
                {nbr.get(2), new Integer(sdouble_personne.get(2))},
                {nbr.get(3), new Integer(sdouble_personne.get(3))},
                {nbr.get(4), new Integer(sdouble_personne.get(4))}
     
            };

    J'aimerais bien savoir comment boucler sur le tableau et le mettre dans notre ArraList, genre comme ça (ça marche pas)

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int i=0; i<tableau.length; i++) {
              sdouble_personne_tri.add(tableau[0][i]);
             }

    Mercii d'avance

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par momo_m Voir le message
    Ce programme tri les deux colonnes à la fois ou une seule colonne.

    Moi ce que je veux c'est qu'il tri une seule colonne mais il garde le même classement par exemple si j'ai un tableau comme ça
    Pour commencer, 'faudrait inverser l'ordre des dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ArrayList<Integer> ligne1 = new ArrayList<Integer>();
    ligne1.add(1);
    ligne1.add(2);
     
    ArrayList<Integer> ligne2 = new ArrayList<Integer>();
    ligne2.add(12);
    ligne2.add(8);
     
    tab.add(ligne1);
    tab.add(ligne2);
    afficher(tab);
    Comme ça, chaque ligne est un objet unique qu'on peut déplacer en entier.

    Ensuite, il faut indiquer à Collections.sort() comment on s'y prend pour trier les lignes les unes par rapport aux autres : en comparant leur première colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Collections.sort(tab, new Comparator<List<Integer>>() {
      @Override
      public int compare(List<Integer> list1, List<Integer> list2) {
        return list1.get(0).compareTo(list2.get(0));
      }
    });
    Citation Envoyé par momo_m Voir le message
    Aussi une question,

    [...] J'aimerais bien savoir comment boucler sur le tableau et le mettre dans notre ArraList, genre comme ça (ça marche pas)
    Tu as inversé 0 et i. Ta boucle fait que i prend toutes les valeurs possibles jusqu'à tableau.length, et non pas tableau[0].length. Donc il faut mettre le [i] juste à côté de tableau, pas après.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème ArrayList deux dimensions
    Par imadhx30 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 01/12/2014, 08h47
  2. ArrayListe à deux dimensions
    Par mimish dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 06/02/2011, 21h52
  3. Tableaux à deux dimension avec ArrayList
    Par demcoul dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 25/09/2009, 17h57
  4. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  5. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50

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