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 :

Regroupement de valeurs dans un tableau


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2008
    Messages : 72
    Par défaut Regroupement de valeurs dans un tableau
    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);
    			}
    		}
    	}
    }

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2008
    Messages : 72
    Par défaut
    En y passant un peu de temps je crois avoir trouvé une solution
    Le code a un peu changé du coup.
    Je prend tous les commentaires

    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
    76
    77
    78
    79
    80
     
     
    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");
    		List<String[]> vals;
    		int index = 0;
    		for(int i = 0; i<instances.size(); i++){
    			System.out.println("i : "+i);
    			String valeurCourante = instances.get(i)[0];
    			for(int j = i+1; j<=instances.size(); j++){
    				String valeurSuivante;
    				if(j==instances.size()){
    					valeurSuivante = "";
    				}else{
    					valeurSuivante = instances.get(j)[0];
    				}
     
    				if(valeurCourante == valeurSuivante){
    					break;
    				}else{
    					vals = instances.subList(index,j);
    					index = j;
    					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]);
    					}
    					break;
    				}
    			}
    		}
    	}
    }

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

Discussions similaires

  1. [WebI XiR2] Regroupement de valeurs dans un tableau croisé
    Par cabville dans le forum Débuter
    Réponses: 2
    Dernier message: 16/07/2010, 12h37
  2. regrouper des valeurs dans un tableau
    Par gg9595 dans le forum Deski
    Réponses: 5
    Dernier message: 03/07/2007, 15h15
  3. [tableau]Valeur dans un tableau
    Par kisscool31 dans le forum Collection et Stream
    Réponses: 30
    Dernier message: 17/05/2005, 09h45
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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