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,
Version imprimable
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,
Bonjour, voici un exemple avec un arraylist comprenant 2 colonnes. On utilise Collections.sort() pour trier la 2nde colonne.
Code:
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(); } } }
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,
Aussi une question,
J'ai une ArrayList et un tableau sous forme Object
Code:
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:
1
2
3
4 for(int i=0; i<tableau.length; i++) { sdouble_personne_tri.add(tableau[0][i]); }
Mercii d'avance
Pour commencer, 'faudrait inverser l'ordre des dimensions :
Comme ça, chaque ligne est un objet unique qu'on peut déplacer en entier.Code:
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);
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 :
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.Code:
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)); } });