Bonjour,
je suis entrain d'écrire un script me permettant d'évaluer les amins au poker et me heurte au problème suivant: j'ai besoin de classer un tableau(en variables de type byte) à deux dimmensions comme suit:
Au départ j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 byte [][] cards={{2,9,11,3,14,5,5},{3,1,1,1,1,0,3}};
Pour les curieux, les première donées sont la valeur des cartes (variant de 2 à 14) et la les deuxièmes données sont les valeurs des familles (variant de 0 à 3)
et j'aimerais finir avec le tableau suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 byte [][] cardsSorted={{2,3,5,5,9,11,14},{3,1,0,3,1,1,1}};

J'ai trouvé une solution (fastudieuse) sur le web qui est la suivante
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
41
42
43
44
45
46
47
48
49
50
51
52
 
import java.util.Arrays;
import java.util.Comparator;
 
public class storing {
 
	/**
         * @param args
         */
	public static void main(String[] args) {
 
		byte [][]number={{4,6,2,3,7,8,1},{8,9,1,3,2,5,6}};
		String [][]numbers=new String[][]{
				{String.valueOf(number[0][0]),String.valueOf(number[1][0])},
				{String.valueOf(number[0][1]),String.valueOf(number[1][1])},
				{String.valueOf(number[0][2]),String.valueOf(number[1][2])},
				{String.valueOf(number[0][3]),String.valueOf(number[1][3])},
				{String.valueOf(number[0][4]),String.valueOf(number[1][4])},
				{String.valueOf(number[0][5]),String.valueOf(number[1][5])},
				{String.valueOf(number[0][6]),String.valueOf(number[1][6])},
 
 
		};
 
 
		Arrays.sort(numbers, new Comparator<String[]>() {
		    @Override
		    public int compare(String[] s1, String[] s2) {
		        String t1 = s1[0];
		        String t2 = s2[0];
		        return t1.compareTo(t2);
		    }
		});
 
byte [][]sortedNumbers=new byte[][]{
		{(byte) Integer.parseInt(numbers[0][0]),(byte) Integer.parseInt(numbers[0][1])},
		{(byte) Integer.parseInt(numbers[1][0]),(byte) Integer.parseInt(numbers[1][1])},
		{(byte) Integer.parseInt(numbers[2][0]),(byte) Integer.parseInt(numbers[2][1])},
		{(byte) Integer.parseInt(numbers[3][0]),(byte) Integer.parseInt(numbers[3][1])},
		{(byte) Integer.parseInt(numbers[4][0]),(byte) Integer.parseInt(numbers[4][1])},
		{(byte) Integer.parseInt(numbers[5][0]),(byte) Integer.parseInt(numbers[5][1])},
		{(byte) Integer.parseInt(numbers[6][0]),(byte) Integer.parseInt(numbers[6][1])},
};
 
//s'occupe d'afficher les résultats
		for(int i=0;i<7;i++){
		System.out.print(sortedNumbers[i][0]);
		System.out.print("   "+sortedNumbers[i][1]);
		System.out.println(" ");
		}
}
}
Maintenant mais question est: peut-on se passer de toutes ces conversions et/ou existe-t-il des méthodes déjà incluses dans Java pour me faciliter la tâche?

J'ai trouvé quelques tutoriels concernant les "compare" et "comparator" mais je n'y ai pas compris grand chose, si quelqu'un a le temps pour m'expliquer le fonctionnnement (de préférence avec un berf exemple) sa serait avec grand plaisir.

Merci d'avance pour vos réponses.