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

avec Java Discussion :

chercher une ligne dans une liste


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut chercher une ligne dans une liste
    Bonjour, dans mon programme j'ai deux fichiers, le 1er c'est une liste des valeurs et le 2ème contient des nombres que je veux les utiliser comme indices pour le premier fichier, j'ai fait ce code
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    public class tableau {
    	public static String[][] readCSV(String nomFichier, char c, Charset charset) throws IOException {
    		return Files.readAllLines(Paths.get(nomFichier), charset).stream().map(ligne -> ligne.split(String.valueOf(c)))
    				.toArray(String[][]::new);
    	}
     
    	static List<String> Acces(int nb, List<List<String>> liste) 
    	{
    		List<String> ligne= new ArrayList<>();
    		for(int i=0; i<liste.size(); i++) {
    			if(i==nb)
    				ligne = liste.get(nb);
    		}
     
    		return ligne;
    	}
     
    	public static void main(String[] args) throws IOException {
     
    		String fileName= "C:\\Users\\asus\\Desktop\\spmf\\sequences.csv";
    		File file= new File(fileName);
     
    		List<List<String>> lines = new ArrayList<>();
    		Scanner inputStream;
     
    		try{
    		inputStream = new Scanner(file);
     
    	    while(inputStream.hasNext()){
    		 String line= inputStream.next();
    		 String[] values = line.split(";");
    		 lines.add(Arrays.asList(values));
    		 }
     
    		 inputStream.close();
    		 }catch (FileNotFoundException e) {
    		 e.printStackTrace();
     
    String ligne1 = "";
    		String[] seq1=null;
    		String fichier1 = "C:\\Users\\asus\\Desktop\\spmf\\lignes.txt";
     
    		BufferedReader ficTexte1;
    		try {
    			ficTexte1 = new BufferedReader(new FileReader(new File(fichier1)));
    			if (ficTexte1 == null) {
    				throw new FileNotFoundException("Fichier non trouvé: " + fichier1);
    			}
    			do {
    				ligne1 = ficTexte1.readLine();
    				if (ligne1 != null) {
    					seq1=ligne1.split(" ");
     
    //					for(int i=0; i<seq1.length; i++) {System.out.print(seq1[i]+"|");}
    //					System.out.println("");
    				}
    			} while (ficTexte1 != null);
    			ficTexte1.close();
    			System.out.println("\n");
    		} catch (FileNotFoundException e) {
    			System.out.println(e.getMessage());
    		} catch (IOException e) {
    			System.out.println(e.getMessage());
    		}
     
    		int k=0;
     
    		for(int i=0; i<seq1.length; i++) {
    			k=Integer.parseInt(seq1[i]);
    			System.out.println(Acces(k, lines)); 
    		}
    	}
    }
    		 }
    donc je veux que je parcours le fichier des nombres, et pour chaque valeur j'accède au 1er fichier pour récupérer la ligne de cet indice là, ce code ne me génère pas d'erreur mais aussi il m'affiche rien.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut

    1. Déjà,
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      static List<String> Acces(int nb, List<List<String>> liste) 
      	{
      		List<String> ligne= new ArrayList<>();
      		for(int i=0; i<liste.size(); i++) {
      			if(i==nb)
      				ligne = liste.get(nb);
      		}
       
      		return ligne;
      	}
      Pourquoi ne pas écrire simplement :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      static List<String> Acces(int nb, List<List<String>> liste) {
      		if ( nb<liste.size() ) {
                           return liste.get(nb);
                      }
                      else {
                           return new ArrayList<>();
      		}
      }
      Au lieu de parcourir la liste inutilement ?
    2. Pourquoi faire des lectures aussi compliquées et bricolées au lieu d'utiliser la première méthode qui fait le même boulot readCSV plus simplement ? Si c'est parce qu'elle retourne un tableau au lieu d'une liste, il faut pas grand chose pour la changer, et de toute manière, ce que tu fais peut tout aussi bien être fait par tableau.

      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
      public static void main(String[] args) throws IOException {
       
          String fileName= "C:\\Users\\asus\\Desktop\\spmf\\sequences.csv";
          String fichier1 = "C:\\Users\\asus\\Desktop\\spmf\\lignes.txt";
       
         String[][] dataFileName = readCSV(fileName, ";", StandartCharset.UTF_8 );
       
         String[][] dataFichier1 = readCSV(fichier1 , " ", StandartCharset.UTF_8 );
       
         int seqligne=0; // numéro de la ligne du fichier1
         if ( dataFichier.length>seqligne ) {
             for(int v : dataFichier1[seqligne]) {
               if ( dataFileName.length>v ) {
                System.out.println( Arrays.toString(dataFileName[v]) ); 
               }
               else {
                System.out.println("Ligne non trouvée : " + v);
               } 
             }
         }
       
      }
    3. while(inputStream.hasNext()){ça ne cherche pas des lignes ça, mais des mots dans une ligne (des mots séparés par une espace).
    4. if (ficTexte1 == null) {Avec ficTexte1 = new BufferedReader(new FileReader(new File(fichier1)));, il est impossible que ficTexte1 soit null. Si le fichier n'existe pas tu auras une exception. Et, sinon, on peut aussi tester si le fichier existe ( méthode exists() de java.io.File, ou exists() de java.nio.Files) avant de l'ouvrir.
    5. Ce n'est pas que ton programme n'affiche rien. Il tourne dans une boucle infinie avant de chercher à afficher quoique soit

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      if (ficTexte1 == null) {
      				throw new FileNotFoundException("Fichier non trouvé: " + fichier1);
      			}
      			do {
      				//
      			} while (ficTexte1 != null);
      Si ficTexte1 n'est pas null, on entre dans le do/while, et on en ressort jamais parce que rien n'en change la valeur, donc il est toujours différent de null !
    6. Je trouve surprenant, enfin pas logique, de lire des lignes dans un fichier appelé sequences.csv et des séquences dans un fichier appelé lignes.txt.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    d'accord mercii, je vais corriger mes erreurs

  4. #4
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    en fait, à partir de mon fichier csv j'ai récupéré cette ligne qui est une liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [201,202,103,104,205,206,107,208,209,110, 1217125080, 201,102,103,104,205,206,107,108,109,110, 1217144220, 201,102,103,104,205,206,107,108,109,110, 1217149800, 201,202,103,104,205,106,107,208,209,110, 1217166360, 201,202,103,204,105,206,107,208,209,110, 1217167560, 201,202,103,104,105,206,107,208,209,110, 1217170140, 201,202,103,104,105,106,107,208,209,110, 1217183040, 201,202,103,104,105,206,107,208,209,110, 1217190480, 201,102,103,104,105,206,107,108,109,110, 1217190480, 201,102,103,104,205,206,107,108,109,110, 1217193240, 201,202,103,104,105,206,107,208,209,110, 1217208660, 201,102,103,204,205,206,107,108,209,110, 1217209680, 201,202,103,104,105,206,107,208,209,110, 1217212620, 201,202,103,104,105,206,107,208,209,110, 1217216160, 201,202,103,104,205,206,107,208,209,110, 1217220300]
    normalement 201,202,103,104,205,206,107,208,209,110, c'est le premier élément et 1217125080 c'est un timestamp et ainsi de suite, je veux parcourir cette liste en cherchant une valeur particulière, par exemple je veux chercher la valeur 106 et lorsqu'elle est présente j'affiche la valeur du timestamp qui la suit , quelqu'un peut m'aider svp?

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pour pouvoir faire ça, il faut un moyen sûr de distinguer le timestamp et les autres valeurs. Un critère. Cela peut être le nombre de valeurs avant (ici il semble que cela soit 10), ou n'importe quoi d'autre de formalisable.

    Sur la base d'un nombre de valeurs, il te suffit de parcourir la liste ou tableau correspondant à une ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int nb=0; // variable pour compter les valeurs avant timestamp
    for(int i=0; i<valeurs.length; i++) {
        nb++;
        if ( nb== 10 ) {
                // la valeur est un timestamp
                nb=0;
        }
        else {
               // la valeur n'est pas un timestamp
        }
    }
    on peut procéder par modulo également. Puisqu'on a un timestamp tous les 11 valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0; i<valeurs.length; i++) {
        if ( ((i+1)%11==0 ) {
                // la valeur est un timestamp 
        }
        else {
               // la valeur n'est pas un timestamp
        }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    c'est le code avec lequel je peux accéder au timestamp merci, mais comment je peux à chaque parcours de 10 valeurs, je peux vérifier s'il contiennent 106 ou non ?

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu stockes les valeurs dans un set par exemple :

    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
     
    Set<String> valeursAvantTimeStamp = new HashSet<>(); // ici j'ai pris String parce que ça vient d'un CSV, mais tu peux convertir en int et utiliser un Set<Integer>
    for(int i=0; i<valeurs.length; i++) {
        if ( ((i+1)%11==0 ) {
                // la valeur est un timestamp 
                if ( valeursAvantTimeStamp.contains("106") ) {
                     // la liste de valeurs avant le timestamp contient 106
                }
                valeursAvantTimeStamp.clear(); // on vide le set pour continuer
        }
        else {
               // la valeur n'est pas un timestamp
               valeursAvantTimeStamp .add(values[i]); // on stocke la valeur
        }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    ça marche pas avec votre proposition, mais j'ai essayé avec cette écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set<String> valeursAvantTimeStamp = new HashSet<>(); 
    		for(int i=0; i<10; i++) {
    			valeursAvantTimeStamp .add(result.get(i));
    		    	for(int j=0; j<valeursAvantTimeStamp.size(); j++) {
    		    		if ( valeursAvantTimeStamp.contains("106") ) {
    		    			System.out.println("valeur trouvée");
    		    		}
    //		    		else System.out.println("valeur non trouvée");
    		    	}  
    		            valeursAvantTimeStamp.clear(); // on vide le set pour continuer
    		}
    je cherche donc dans les 10 premières valeurs, mais je sais pas comment incrémenter le compteur pour recommencer à partir des 10 deuxièmes valeurs et ainsi de suite.

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sel.chayma Voir le message
    ça marche pas avec votre proposition
    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
    public static void main(String[] args) {
     
    		String[] valeurs = "201,202,103,104,205,206,107,208,209,110, 1217125080, 201,102,103,104,205,206,107,108,109,110, 1217144220, 201,102,103,104,205,206,107,108,109,110, 1217149800, 201,202,103,104,205,106,107,208,209,110, 1217166360, 201,202,103,204,105,206,107,208,209,110, 1217167560, 201,202,103,104,105,206,107,208,209,110, 1217170140, 201,202,103,104,105,106,107,208,209,110, 1217183040, 201,202,103,104,105,206,107,208,209,110, 1217190480, 201,102,103,104,105,206,107,108,109,110, 1217190480, 201,102,103,104,205,206,107,108,109,110, 1217193240, 201,202,103,104,105,206,107,208,209,110, 1217208660, 201,102,103,204,205,206,107,108,209,110, 1217209680, 201,202,103,104,105,206,107,208,209,110, 1217212620, 201,202,103,104,105,206,107,208,209,110, 1217216160, 201,202,103,104,205,206,107,208,209,110, 1217220300".split(",");
     
    		Set<String> valeursAvantTimeStamp = new HashSet<>(); // ici j'ai pris String parce que ça vient d'un CSV, mais tu peux convertir en int et utiliser un Set<Integer>
    		for(int i=0; i<valeurs.length; i++) {
    		    if ( (i+1)%11==0 ) {
    		            // la valeur est un timestamp 
    		            if ( valeursAvantTimeStamp.contains("106") ) {
    		                 // la liste de valeurs avant le timestamp contient 106
    		            	System.out.println("Le timestamp est " + valeurs[i]);
    		            }
    		            valeursAvantTimeStamp.clear(); // on vide le set pour continuer
    		    }
    		    else {
    		           // la valeur n'est pas un timestamp
    		           valeursAvantTimeStamp .add(valeurs[i]); // on stocke la valeur
    		    }
    		}
     
    	}
    Affiche
    Le timestamp est 1217166360
    Le timestamp est 1217183040
    Donc ça fonctionne très bien.

    Citation Envoyé par sel.chayma Voir le message
    , mais j'ai essayé avec cette écriture
    [...]
    je cherche donc dans les 10 premières valeurs, mais je sais pas comment incrémenter le compteur pour recommencer à partir des 10 deuxièmes valeurs et ainsi de suite.
    Quel compteur ? Y'a pas de compteur dans le code que tu as écrit ! Y'en avait un dans le mien, enfin le premier, sans modulo. Et ta boucle for(int j=0; j<valeursAvantTimeStamp.size(); j++) { ne sert à rien, un appel à contains ça suffit pour tester si une valeur est contenue dans un set.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    merci beaucoup

  11. #11
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    pardon, j'ai un petit souci, la liste en entrée je veux pas l'écrire toute manuellement, je veux que ça fonctionnent sur toute entrée met automatiquement, par exemple j'ai cette liste que j'ai convertit en string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] array = result.toArray(new String[0]);
    ensuite j'ai fait le même code mais ça n'affiche rien je sais pas pourquoi.
    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
    Set<String> valeursAvantTimeStamp = new HashSet<>(); 
    		for(int i=0; i<array.length; i++) {
    		    if ( (i+1)%11==0 ) {
    		            // la valeur est un timestamp 
    		            if ( valeursAvantTimeStamp.contains("106") ) {
    		                 // la liste de valeurs avant le timestamp contient 106
    		            	System.out.println("Le timestamp est " + array[i]);
     
    		            }
    		            valeursAvantTimeStamp.clear(); // on vide le set pour continuer
    		    }
    		    else {
    		           // la valeur n'est pas un timestamp
    		           valeursAvantTimeStamp .add(array[i]); // on stocke la valeur
    		    }
     
    		}

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est quoi result et comment c'est construit ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    j'ai cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    static List<String> Acces(int nb, List<List<String>> liste) {
     
    		if ( nb<liste.size() ) {
     
                return liste.get(nb);
           }
           else {
                return new ArrayList<>();
    }
    }
    avec laquelle je récupère une ligne de la liste, ensuite en faisant l'appel à cette fonction je met le résultat dans la variable result
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int k=0;
    		List<String> result= new ArrayList<>();
     
    		for(int i=0; i<seq1.length; i++) {
     
    			k=Integer.parseInt(seq1[i]);
     
    			result= Acces(k, lines); 	
     
    		}
    donc elle contient les valeurs que vous avez entré manuellement précédemment.

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ok, et si, avant Set<String> valeursAvantTimeStamp = new HashSet<>();, tu affiches array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("ligne = " + java.util.Arrays.toString(array));
    ça affiche quoi ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    affiche ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne = [201,202,103,104,205,206,107,208,209,110, 1217125080, 201,102,103,104,205,206,107,108,109,110, 1217144220, 201,102,103,104,205,206,107,108,109,110, 1217149800, 201,202,103,104,205,106,107,208,209,110, 1217166360, 201,202,103,204,105,206,107,208,209,110, 1217167560, 201,202,103,104,105,206,107,208,209,110, 1217170140, 201,202,103,104,105,106,107,208,209,110, 1217183040, 201,202,103,104,105,206,107,208,209,110, 1217190480, 201,102,103,104,105,206,107,108,109,110, 1217190480, 201,102,103,104,205,206,107,108,109,110, 1217193240, 201,202,103,104,105,206,107,208,209,110, 1217208660, 201,102,103,204,205,206,107,108,209,110, 1217209680, 201,202,103,104,105,206,107,208,209,110, 1217212620, 201,202,103,104,105,206,107,208,209,110, 1217216160, 201,202,103,104,205,206,107,208,209,110, 1217220300]

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu peux me montrer le code complet, parce qu'avec les petits bouts disparates que tu montres, je ne vois pas pourquoi ça ne fonctionnerait pas.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    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
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.lang.reflect.Array;
    import java.nio.charset.Charset;
    import java.nio.charset.StandardCharsets;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Scanner;
    import java.util.Set;
     
    public class tableau {
    	public static String[][] readCSV(String nomFichier, char c, Charset charset) throws IOException {
    		return Files.readAllLines(Paths.get(nomFichier), charset).stream().map(ligne -> ligne.split(String.valueOf(c)))
    				.toArray(String[][]::new);
    	}
     
    	static List<String> Acces(int nb, List<List<String>> liste) {
     
    		if ( nb<liste.size() ) {
     
                return liste.get(nb);
           }
           else {
                return new ArrayList<>();
    }
    }
     
     
     
    	public static void main(String[] args) throws IOException {
     
    		String fileName= "C:\\Users\\asus\\Desktop\\spmf\\sequences.csv";
    		File file= new File(fileName);
     
    		List<List<String>> lines = new ArrayList<>();
    		Scanner inputStream;
     
    		try{
    		inputStream = new Scanner(file);
     
    	    while(inputStream.hasNext()){
    		 String line= inputStream.next();
    		 String[] values = line.split(";");
    		 lines.add(Arrays.asList(values));
    		 }
     
    		 inputStream.close();
    		 }catch (FileNotFoundException e) {
    		 e.printStackTrace();
    		 }
     
    		String ligne = "";
    		String[] seq=null; //Motif
    		String[] chaine=null;
    		String fichier = "C:\\Users\\asus\\Desktop\\spmf\\frequent-seq.txt";
     
    		BufferedReader ficTexte;
    		try {
    			ficTexte = new BufferedReader(new FileReader(new File(fichier)));
    			if (ficTexte == null)
    			{
    				throw new FileNotFoundException("Fichier non trouvé: " + fichier);
    			}
    			else {
    				ligne = ficTexte.readLine();
    				if (ligne != null) {
     
    					seq=ligne.split(",");
    					for(int i=0; i<seq.length; i++) {
    						System.out.println(seq[i]);
    					}
    				System.out.println("");
    				}
    			}
     
     
    			ficTexte.close();
    			System.out.println("\n");
    		} catch (FileNotFoundException e) {
    			System.out.println(e.getMessage());
    		} catch (IOException e) {
    			System.out.println(e.getMessage());
    		}
     
    		String ligne1 = "";
    		String[] seq1=null;
    		String fichier1 = "C:\\Users\\asus\\Desktop\\spmf\\lignes.txt";
     
    		BufferedReader ficTexte1;
    		try {
    			ficTexte1 = new BufferedReader(new FileReader(new File(fichier1)));
    			if (ficTexte1 == null) {
    				throw new FileNotFoundException("Fichier non trouvé: " + fichier1);
    			}
    //			do {
    				ligne1 = ficTexte1.readLine();
    				if (ligne1 != null) {
    					seq1=ligne1.split(" ");
     
    			ficTexte1.close();
    			System.out.println("\n");}
    		} catch (FileNotFoundException e) {
    			System.out.println(e.getMessage());
    		} catch (IOException e) {
    			System.out.println(e.getMessage());
    		}
     
    		int k=0;
    		List<String> result= new ArrayList<>();
     
    		for(int i=0; i<seq1.length; i++) {
     
    			k=Integer.parseInt(seq1[i]);
     
    			result= Acces(k, lines); 	
     
    		}
    		System.out.println(result);
    		String[] array = result.toArray(new String[0]);
     
    		System.out.println("ligne = " + java.util.Arrays.toString(array));
    		Set<String> valeursAvantTimeStamp = new HashSet<>(); 
    		for(int i=0; i<array.length; i++) {
    		    if ( (i+1)%11==0 ) {
    		            // la valeur est un timestamp 
    		            if ( valeursAvantTimeStamp.contains("106") ) {
    		                 // la liste de valeurs avant le timestamp contient 106
    		            	System.out.println("Le timestamp est " + array[i]);
     
    		            }
    		            valeursAvantTimeStamp.clear(); // on vide le set pour continuer
    		    }
    		    else {
    		           // la valeur n'est pas un timestamp
    		           valeursAvantTimeStamp .add(array[i]); // on stocke la valeur
    		    }
     
    		}
     
    		}
    }

  18. #18
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pourquoi quand je te dis te faire un truc, tu fais autrement en 100 fois plus emberlificoté ?

    Et pourquoi quand j'écris :
    Citation Envoyé par joel.drigo Voir le message
    Ok, et si, avant Set<String> valeursAvantTimeStamp = new HashSet<>();, tu affiches array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("ligne = " + java.util.Arrays.toString(array));
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String[] array = result.toArray(new String[0]);
    System.out.println("ligne = " + java.util.Arrays.toString(array));
    Set<String> valeursAvantTimeStamp = new HashSet<>();

    Tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println(result);
    String[] array = result.toArray(new String[0]);
    Set<String> valeursAvantTimeStamp = new HashSet<>();
    ?

    Alors d'accord, pour le coup, ça donne (normalement) le même résultat. En l’occurrence, c'est le cas. Mais c'est pour le principe, si je te donne un code à tester, c'est ce code qu'il faut tester. Si je veux voir le contenu de array, c'est celui de result.

    si je teste avec ton jeu d'essai (obtenu par la ligne result que tu affiches), ça fonctionne avec moi. Je ne sais pas où il y a le problème chez toi. Peut-être exécutes-tu un autre code, avec d'autres données, je ne peux en être sûr.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/10/2009, 13h31
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [E-00] Syntaxe pour insérer une ligne ou une colonne dans une feuille
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 09h27
  4. [MySQL] inserer une ligne d'une table dans une autre table
    Par piero53 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/12/2008, 18h29
  5. Réponses: 3
    Dernier message: 29/01/2008, 12h08

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