Bonjour
Après une recherche infructueuse sur les forums (avec les termes regroupement tableau), j'ouvre une nouvelle discution.

La situation :
J'ai un ArrayList<String[]>. Mon ArrayList contient plusieurs tableaux de String.
Les tableaux de string ont chacun dans la première colonne un code.
Mon ArrayList est trié selon ce code.

Ma problématique :
Je souhaite "découper" mon ArrayList en plusieurs. le découpage doit se faire en fonction des codes.
C'est à dire que je souhaite obtenir un ArrayList regroupant tous les String[] avec le code 1, un autre ArrayList regroupant tous les String[] avec le code 2, etc.

Je suis arrivé à faire quelque chose mais je bloque.
En effet dans mon exemple je n'arrive pas à récupérer la dernière ligne.
J'obtiens 3 ArrayList<String[]> au lieu de 4.

Merci de votre aide.

Mon code de test :
Code java : 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
public class Test {
 
	/**
         * @param args
         */
	public static void main(String[] args) {
 
		ArrayList<String[]> instances = new ArrayList<String[]>();
		String[] valeur1 = {"Z","A","B"}; 		
		String[] valeur2 = {"U","U","L"};
		String[] valeur3 = {"F","U","L"};
		String[] valeur4 = {"F","A","M"};
		String[] valeur5 = {"N","O","P"};
		String[] valeur6 = {"Z","R","B"};
 
		instances.add(valeur1);
		instances.add(valeur2);
		instances.add(valeur3);
		instances.add(valeur4);
		instances.add(valeur5);
		//instances.add(valeur6);
		System.out.println("==> pas trié");
		for(int i = 0; i<instances.size(); i++){
			String[] tab = instances.get(i);
			String msg ="";
			for(String val : tab){
				msg += val+" , ";
			}
			System.out.println(msg);
		}
 
		Collections.sort(instances, new Comparator() {
     	   public int compare(Object o1, Object o2) {
				String[] m1 = (String[]) o1;
				String[] m2 = (String[]) o2;
				return m1[0].compareTo(m2[0]);
			}
		});
		System.out.println("\n==> trié");
		for(int i = 0; i<instances.size(); i++){
			String[] tab = instances.get(i);
			String msg ="";
			for(String val : tab){
				msg += val+" , ";
			}
			System.out.println(msg);
		}
 
		System.out.println("\n==> test de rupture");
		int j = 0;
		for(int i = 0 ; i < instances.size() ; i++){
			List<String[]> vals;
			String valeurCourante = instances.get(i)[0];
			String valeurPrecedente = instances.get(j)[0];
			//System.out.println("valeurCourante : "+ valeurCourante);
			//System.out.println("valeurPrecedente : "+ valeurPrecedente);
			if((valeurCourante != valeurPrecedente)){
				//System.out.println("index de rupture : " + i);
				//System.out.println(valeurCourante + " not equals " + valeurPrecedente);
				//System.out.println("j : "+j );
				System.out.println("i : "+i );
				vals = instances.subList(j,i);
				j = i;
				System.out.println("longeur vals : "+vals.size());
				for(int k = 0; k< vals.size(); k++){
					System.out.println("vals.get("+k+")[0] : " +vals.get(k)[0]);
				}
			}
			if((i == instances.size()-1)){
				System.out.println("fin index : " +i);
			}
		}
	}
}