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 :

ArrayList et NoSuchElementException


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut ArrayList et NoSuchElementException
    Bonjour,

    un petit problème avec une ArrayList que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	private static ArrayList <LinkedList<Chronique>> maliste = new ArrayList<LinkedList<Chronique>>();
    Quand je fait sà, lors de l'ajout dans l'arrayList sa fonctionne a merveille, je récupère bien les valeurs souhaité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(maliste.get(count_remplir_array).getFirst().getTemperature());
    Par contre dans une autre fonction que voici , j'ai un problème à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(maliste.get(i).getFirst().getId_station()==id_selec){
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.util.NoSuchElementException
    	at java.util.LinkedList.getFirst(Unknown Source)
    	at ChargerStation.analyse(ChargerStation.java:170)
    et la fonction en question :
    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
     
    public static void analyse(){
    	int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
    	System.out.println(id_selec);
    	System.out.println(maliste.size());
    	for(int i=0;i<maliste.size();i++){
    		System.out.println(maliste.get(i).getFirst().getTemperature());	
    		if(maliste.get(i).getFirst().getId_station()==id_selec){
    			int max = maliste.get(i).size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<maliste.get(i).size();j++){
    				double donnee = maliste.get(i).get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    Merci d'avance du coup de pouce

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Tu as déjà vérifié "System.out.println(id_selec)"

    Alors c'est comme si getId_station() n'existe pas.
    Ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(maliste.get(count_remplir_array).getFirst().getId_station());
    pour voir ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Tu as déjà vérifié "System.out.println(id_selec)"

    Alors c'est comme si getId_station() n'existe pas.
    Ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(maliste.get(count_remplir_array).getFirst().getId_station());
    pour voir ...
    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
     
    public static void analyse_fichier(String nom_fichier){
    		BufferedReader lecteurAvecBuffer = null;
    		String ligne=null;
    		try
    		{
    			lecteurAvecBuffer = new BufferedReader(new FileReader(nom_fichier));
    		}
    		catch(FileNotFoundException exc)
    		{
    			System.out.println("Erreur d'ouverture");
    		}
    		try{ 
     
    			String[] chaineEclate = null;
    			// System.out.println(lecteurAvecBuffer);
    			ligne = lecteurAvecBuffer.readLine();
    			while ((ligne = lecteurAvecBuffer.readLine()) != null){
    				String eclate = ligne;
    				chaineEclate = eclate.split("\t");
    				//System.out.println(chaineEclate[0]);
    				Chronique s1 = new Chronique(Integer.valueOf(chaineEclate[0]),Integer.valueOf(chaineEclate[1]),Integer.valueOf(chaineEclate[2]),
    Integer.valueOf(chaineEclate[3]),Float.valueOf(chaineEclate[5]),Integer.valueOf(chaineEclate[6]),Integer.valueOf(chaineEclate[7]),
    Integer.valueOf(chaineEclate[8]),Integer.valueOf(chaineEclate[9]),
    Integer.valueOf(chaineEclate[10]),Integer.valueOf(chaineEclate[11]));
    				chroniques.add(s1);
     
     
    				eclate="";
    				//ESSAI POUR LE PREMIER GRAPH AVEC SEULEMENT LES TEMPERATURES
    			/*	if(x==0){
    				Chronique s2 = new Chronique(Float.valueOf(chaineEclate[5]));
    				chro.add(s2);
    				}
    			*/	
     
    				// chroniques.remove();
     
     
    			}
    			//
    			//listestations.add(Integer.valueOf(chaineEclate[0]),chroniques);
    			maliste.add(chroniques);
    			//System.out.println(maliste.get(count_remplir_array).getFirst().getTemperature());
    			System.out.println(maliste.get(count_remplir_array).getFirst().getId_station());
    			//System.out.println(count_remplir_array);
    			//System.out.println(maliste.get(count_remplir_array).)
    			Station s2 = new Station(Integer.valueOf(chaineEclate[0]),maliste.get(count_remplir_array));
    			listestations.add(s2);
    			MapView.comboL.addItem(chaineEclate[0]);
     
    		lecteurAvecBuffer.close();
    		chroniques.clear();
    		count_remplir_array++;
    	//	System.out.println(chroniques);
    	//	System.out.println(chro);
    		}
    	catch(IOException e){System.err.println(e);}
     
    	}
    Fonctionne très très bien ici , je récupère bien chaque identifiant de mes stations et quand je vais le faire là :
    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
    public static void analyse(){
    	int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
    	System.out.println(id_selec);
    	System.out.println(maliste.size());
    	int ii=0;
    	System.out.println(maliste.get(ii).getFirst().getId_station());
     
    	for(int i=0;i<maliste.size();i++){
    		System.out.println(maliste.get(i).getFirst().getTemperature());	
    		if(maliste.get(i).getFirst().getId_station()==id_selec){
    			int max = maliste.get(i).size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<maliste.get(i).size();j++){
    				double donnee = maliste.get(i).get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    sa me met cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.util.NoSuchElementException
    	at java.util.LinkedList.getFirst(Unknown Source)
    	at ChargerStation.analyse(ChargerStation.java:171)
    la ligne 171 correspond au println que vous m'avez demander de faire ...

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    C'est assez curieux.
    la doc java de NoSuchElementException indique :
    Thrown by the nextElement method of an Enumeration to indicate that there are no more elements in the enumeration.
    à l'évidence c'est le java.util.LinkedList.getFirst qui ne trouve pas l'élément.
    Cependant le maliste.get(i).getFirst().getTemperature() ne plante pas.

    Tu pourrais essayer de récupérer l'objet d'abord
    et d'exploiter ses propriétés ensuite :

    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
    public static void analyse(){
    	int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
     
    	for(int i=0;i<maliste.size();i++){
                    Chronique chr = maliste.get(i).getFirst();
    		System.out.println(chr.getTemperature());	
    		if(chr.getId_station()==id_selec){
    			int max = maliste.get(i).size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<maliste.get(i).size();j++){
    				double donnee = maliste.get(i).get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Et même ça :

    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
     
    public static void analyse(){
    	final int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
     
    	for(int i=0;i<maliste.size();i++){
                    final LinkedList<Chronique> list = maliste.get(i);
                    final Chronique chr = list.getFirst();
    		System.out.println(chr.getTemperature());	
    		if(chr.getId_station()==id_selec){
    			final int max = list.size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<list.size();j++){
    				final double donnee = list.get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Pour aider, voici un petit test avec une liste vide, en java 6 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main(String[] args) {
    	LinkedList<String> list = new LinkedList<String>();
    	String str = list.getFirst();
    }
    Ca me donne bien l'exception suivante, comme toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.util.NoSuchElementException
    	at java.util.LinkedList.getFirst(Unknown Source)
    	at org.test.ListTesteur.main(ListTesteur.java:13)
    Et la javadoc dit bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Throws:  NoSuchElementException - if this list is empty
    Reste à savoir pourquoi ça ne plante pas dans ton system.out... Tu es bien certain d'avoir lancer le code que tu nous as envoyé ?

    Donne nous les traces exactes de tes system.out, qu'on vérifie que tu as bien le bon nombre d'éléments par exemple
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    1- Tu dois d'abord tester avec la méthode size si la liste contient d'éléments avant d'utiliser getFirst.
    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
    for(LinkedList<Chronique> list : maliste){
        if (list.size()>0){
    		final Chronique chr = list.getFirst();
    		System.out.println(chr.getTemperature());	
    		if(chr.getId_station()==id_selec){
    			final int max = list.size();
    			valeursTab=new double[1][max];
    			int j = 0;
    			for(Chronique chr2 : list){
    				final double donnee = chr2.getTemperature();
    				valeursTab[0][j++] = donnee;
    			}
    		}
    	}
    }
    2- Je ne sais pas ce que tu veux faire avec le tableau valeursTab mais ça va prendre la valeur de la dernière itération qui satisfera la condition
    if(chr.getId_station()==id_selec)
    A+.

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Reste à savoir pourquoi ça ne plante pas dans ton system.out
    Oui c'est bien là le mystère
    Essaye de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chronique chr = maliste.get(i).getFirst();
    pour voir si on récupère bien un objet Chronique
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ca ne plante probablement pas dans le sysout de l'ajout parce que tu rajoute une linked list vide aussi ailleurs (dans ton code) à la collection, tout simplement.
    Ou alors, après l'avoir ajoutée tu la vide...
    Ce n'est pas parce que ca marche à l'ajout que getFirst() marchera toujours à la lecture. Comme dit, avant d'appeler getFirst(), assure toi que la liste n'est pas vide.

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    1- Tu dois d'abord tester avec la méthode size si la liste contient d'éléments avant d'utiliser getFirst.
    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
    for(LinkedList<Chronique> list : maliste){
        if (list.size()>0){
    		final Chronique chr = list.getFirst();
    		System.out.println(chr.getTemperature());	
    		if(chr.getId_station()==id_selec){
    			final int max = list.size();
    			valeursTab=new double[1][max];
    			int j = 0;
    			for(Chronique chr2 : list){
    				final double donnee = chr2.getTemperature();
    				valeursTab[0][j++] = donnee;
    			}
    		}
    	}
    }
    2- Je ne sais pas ce que tu veux faire avec le tableau valeursTab mais ça va prendre la valeur de la dernière itération qui satisfera la condition

    A+.
    Est-ce que sa viendrais pas de mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chroniques.clear();
    dans la fonction analyse fichier .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(maliste.isEmpty()){ System.out.println("Ok");}
    me me retourne pas Ok donc a priori elle est pas vide et quand je fait un println de maliste.size() j'ai bien 263 ( le nombre de stations )



    2- Je ne sais pas ce que tu veux faire avec le tableau valeursTab mais ça va prendre la valeur de la dernière itération qui satisfera la condition
    Je veux juste mettre toute les valeur de température de la linkedList correspondant à la ligne de L'arrayList

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    me me retourne pas Ok donc a priori elle est pas vide et quand je fait un println de maliste.size() j'ai bien 263 ( le nombre de stations )
    maliste n'est pas vide mais que l'élément LinkedList<??> qu'il contient ne contient pas d'élément.

    A+.

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Essaie de parcourir seulement tes données pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int n = 0;
    for(LinkedList<Chronique> list : maliste){
    	System.out.println("maliste : "+ n++);	
    	for(Chronique chr2 : list){
    		System.out.println("       Chronique : "+ chr2.getId_station());
    	}
    	System.out.println("");
    }
    A+.

  13. #13
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    1- Tu dois d'abord tester avec la méthode size si la liste contient d'éléments avant d'utiliser getFirst.
    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
    for(LinkedList<Chronique> list : maliste){
        if (list.size()>0){
    		final Chronique chr = list.getFirst();
    		System.out.println(chr.getTemperature());	
    		if(chr.getId_station()==id_selec){
    			final int max = list.size();
    			valeursTab=new double[1][max];
    			int j = 0;
    			for(Chronique chr2 : list){
    				final double donnee = chr2.getTemperature();
    				valeursTab[0][j++] = donnee;
    			}
    		}
    	}
    }
    2- Je ne sais pas ce que tu veux faire avec le tableau valeursTab mais ça va prendre la valeur de la dernière itération qui satisfera la condition

    A+.
    Du coup, sa à l'air de fonctionner, mais mes graphique ne fonctionne plus ... Bisar tout de même , je vais y réfléchir quelques minutes .

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par ptitdje Voir le message
    Du coup, sa à l'air de fonctionner, mais mes graphique ne fonctionne plus ... Bisar tout de même , je vais y réfléchir quelques minutes .
    Citation Envoyé par andry.aime Voir le message
    Essaie de parcourir seulement tes données pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int n = 0;
    for(LinkedList<Chronique> list : maliste){
    	System.out.println("maliste : "+ n++);	
    	for(Chronique chr2 : list){
    		System.out.println("       Chronique : "+ chr2.getId_station());
    	}
    	System.out.println("");
    }
    A+.

  15. #15
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    et remplace aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (list.size()>0){
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( !list.isEmpty() ) { ...
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  16. #16
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    2- Je ne sais pas ce que tu veux faire avec le tableau valeursTab mais ça va prendre la valeur de la dernière itération qui satisfera la condition
    Utilise une List laquelle tu instancie avant les boucles que tu faits un add(chr2.getTemperature()) et quand tu as besoin du tableau tu ne fait qu'appeler la méthode toArray.

    A+.

  17. #17
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par thierryler Voir le message
    et remplace aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (list.size()>0){
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( !list.isEmpty() ) { ...
    Voilà le résultat. Rien d'autre. Etrange ... Je n'y comprend plus rien du tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    maliste : 0
    maliste : 1
    maliste : 2
    maliste : 3
    maliste : 4
    maliste : 5
    maliste : 6
    maliste : 7
    ...
    maliste : 260
    maliste : 261
    maliste : 262
    avec :
    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
    public static void analyse(){
     
    	int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
    	int n = 0;
    	for(LinkedList<Chronique> list : maliste){
    		System.out.println("maliste : "+ n++	);
    		if( !list.isEmpty() ) {
    			final Chronique chr = list.getFirst();
    			System.out.println(chr.getTemperature()+ "    Problems");
    			if(chr.getId_station()==id_selec){
    				final int max = list.size();
    				valeursTab=new double[1][max];
    				int j=0;
    				for(Chronique chr2 : list){
    					System.out.println("     Chronique :"+chr2.getId_station());
    					final double donnee = chr2.getTemperature();
    					valeursTab[0][j++]=donnee;
     
    				}
    				System.out.println("");
     
    			}
    		}
    	}
    }


    Petit résumé de la situation qui pour moi deviens de plus en plus enigmatique :
    - j'ai une ArrayList qui contient à chaque ligne une LinkedList de Chronique.
    Concernant ce que je souhaite faire avec valeurTab, je met ce bout de code qui fait ce que je souhaite mais uniquement avec une LinkedList que j'avais construite a coté pour faire des test. Et là aucun souci sa fonctionne à merveille.

    public static void creer_valeur_float(int max){
    valeursTab=new double[1][max];
    Iterator<Chronique> it = chro.iterator();
    int i=0;
    while(it.hasNext()){
    Chronique temp=it.next();
    double donnee = (double) temp.getTemperature();
    valeursTab[0][i] = donnee;
    i++;
    }

    }



    Nouvelle essais avec simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static void analyse(){
    	int n = 0;
    	for(LinkedList<Chronique> list : maliste){
    		System.out.println("maliste : "+ n++);	
    		for(Chronique chr2 : list){
    			System.out.println("       Chronique : "+ chr2.getId_station());
    		}
    		System.out.println("");
    	}
    }
    Sa me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    maliste : 1
     
    maliste : 2
    ...
    maliste : 259
     
    maliste : 260
     
    maliste : 261
     
    maliste : 262
    En fait j'ai clairement l'impression que quand je supprime la linkedList que j'ai mise avant dans l'ArrayList n'ai pas sauvegardé dans l'ArrayList . Enfin je n'y comprend plus rien à ces liste . Sa me paraissait simple jusqu'a tomber sur cette épine .

    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
    	public static void analyse_fichier(String nom_fichier){
    		BufferedReader lecteurAvecBuffer = null;
    		String ligne=null;
    		try
    		{
    			lecteurAvecBuffer = new BufferedReader(new FileReader(nom_fichier));
    		}
    		catch(FileNotFoundException exc)
    		{
    			System.out.println("Erreur d'ouverture");
    		}
    		try{ 
    		
    			String[] chaineEclate = null;
    			ligne = lecteurAvecBuffer.readLine();
    			while ((ligne = lecteurAvecBuffer.readLine()) != null){
    				String eclate = ligne;
    				chaineEclate = eclate.split("\t");
    				Chronique s1 = new Chronique(Integer.valueOf(chaineEclate[0]),Integer.valueOf(chaineEclate[1]),Integer.valueOf(chaineEclate[2]),
    Integer.valueOf(chaineEclate[3]),Float.valueOf(chaineEclate[5]),
    Integer.valueOf(chaineEclate[6]),Integer.valueOf(chaineEclate[7]),
    Integer.valueOf(chaineEclate[8]),
    Integer.valueOf(chaineEclate[9]),Integer.valueOf(chaineEclate[10]),
    Integer.valueOf(chaineEclate[11]));
    				chroniques.add(s1);	
    				eclate="";
    			
    				
    			
    				
    				
    			}
    		
    			
    			maliste.add(chroniques);
    			
    	
    			Station s2 = new Station(Integer.valueOf(chaineEclate[0]),maliste.get(count_remplir_array));
    			listestations.add(s2);
    			MapView.comboL.addItem(chaineEclate[0]);
    			
    		lecteurAvecBuffer.close();
    		chroniques.clear();
    		count_remplir_array++;
    		}
    	catch(IOException e){System.err.println(e);}
    	
    	}
    Je ne vois plus que sa qui serais la cause de mes problèmes ... Sinon je vois pas .

  18. #18
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par ptitdje Voir le message
    Etrange ... Je n'y comprend plus rien du tout
    Rien d'étrange, parce que tous les LinkedList<Chronique> dans "maliste" sont toutes vides. Et ça on t'avais dit depuis le début. Vérifie bien comment tu charges tes données.

  19. #19
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Rien d'étrange, parce que tous les LinkedList<Chronique> dans "maliste" sont toutes vides. Et ça on t'avais dit depuis le début. Vérifie bien comment tu charges tes données.
    Bah oui, mais le problème c'est que du coup je fait comment pour garder en mémoire mes données dans l'ArrayList "à tout jamais ?" Car là je comprend bien du coup que je supprime la LinkedList à chaque itération ce qui est totalement stupide ( dans ma tete , l'ArrayList allait la copier et la garder , d'ou le fait que je la supprime ).

    Je suis ouvert du coup à une idée ...

  20. #20
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Rien d'étrange, parce que tous les LinkedList<Chronique> dans "maliste" sont toutes vides. Et ça on t'avais dit depuis le début. Vérifie bien comment tu charges tes données.
    Je sais pas si je m'exprime correctement mais du coup si je ne fait pas la suprresion de la LinkedList je me retrouve tout simplement avec toute les chronique de toute les stations pour chaque itération de l'ArrayList et c'est pas vraiment ce que je souhaite ...

Discussions similaires

  1. [SAX] NoSuchElementException sur parser XML
    Par iceman dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 17/05/2004, 14h42
  2. [info]arrayList ou Vector
    Par schousso dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/05/2004, 15h47
  3. [info]ArrayList
    Par schousso dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 06/05/2004, 11h44
  4. [Fichier] Ajout des lignes de doc dans arraylist
    Par 3adoula dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 29/04/2004, 22h41
  5. [ STRUTS ][ JSP ][ ArrayList] un lien pour trier
    Par LoulouFifi dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/02/2004, 17h24

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