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 :

Traitement d'une liste de tableaux d'objects vers une autre liste d'objets


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut Traitement d'une liste de tableaux d'objects vers une autre liste d'objets
    Bonjour

    j'ai une liste de tableaux d'objest je veux insérer dans une liste d'objet paramétre avec un petit traitement :
    la liste d'objets
    Nom : listeTableau.JPG
Affichages : 676
Taille : 27,0 Ko

    je veux insérer dans une liste d'une instance d'une classe qui contient un attribut de type date et un atribut de type string( ça sera la concaténation d'une maoyenne avec le caractére % pour indiquer que c'est la moyenne)
    exple de résultat

    1er attribut | 2eme attribut
    16/3/14 3:18:00 | ( (1,0625+1+0,990740740740741+0,987341772151899)/4 )*100 ) %
    16/3/14 3:24:00 | ( (0+ 0,167832167832168+0,280632411067194+0,3)/4) *100 ) %

    comment je peux le faire
    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui enfin une liste de tableaux d'objets à mettre dans une liste d'objets... Il va falloir être un peu plus clair que ça quand même.

    L'image c'est très bien, mais le code Java c'est mieux (logiquement il aurait fallu les deux. J'ai jamais bien compris ce qui peut pousser les gens à pas le faire.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    merci thelvin pour ta réponse, parceque je suis débutante et je ne sais pas
    si tu peux m'aider je serais reconnaissante

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Comment ça tu sais pas ?
    C'est toi qui as dit que tu as une liste de tableaux d'objets. Comment tu le sais, que tu as ça ?
    Même question pour tout le reste.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    j'ai une List<Object[]>

    j'ai crée une classe convert qui contient deux attributs l'un de type Date et l'autre de type String
    j'ai déclaré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Convert> listConvert = new ArrayList<Convert>();
    je veux insérer dans listConvert les elemens de la liste de tableaux d'objets avec le 1er élément sera la date et le 2eme element sera la moyenne pour chaque date et là je me bloque dans le traitement des boucles

    merci

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bien.

    Bon, en gros tu as un problème de regroupement. Pour calculer ta moyenne tu as besoin de connaître toutes les données de même date.
    Ce qui veut dire, un moyen de connaître, pour une date, quelles sont les données associées à cette date.

    Quand on veut des associations de ce genre, les List<Truc> ne sont pas très adaptées. Il vaudrait mieux des Map<Date, DonneesAssocieeAUneDate>.
    Ce qui voudrait dire, partir de Map<Date, List<Double>> qui contient pour chaque Date, la liste des nombres associés. Et obtenir une Map<Date, Double>, qui contient, pour chaque Date, la moyenne des nombres de cette Date.

    On peut pas toujours choisir les données de départ. Je suppose que tu commences avec List<Object[]> et que tu as pas le choix. L'idée serait donc de commencer par transformer ça en Map<Date, List<Double>>, et de faire le reste ensuite.
    Penchons-nous sur cette première étape.

    Les Dates devraient être gardées dans l'ordre chronologique, on va donc utiliser une Map triée : TreeMap. Reste à prendre les données de List<Object[]> et les mettre dans cette Map.

    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
    16
    17
    18
    19
    20
    21
    22
    // données de départ
    List<Object[]> rawObjects = recupererLesObjets();
     
    // créer la Map
    Map<Date, List<Double>> = new TreeMap<>();
     
    // remplir la Map
    for(Object[] raw : rawObjects) {
      Date date = raw[0];
      double value = raw[1];
      // si la date n'existe pas encore dans la Map, l'ajouter
      if(!map.containsKey(date)) {
        map.put(date, new ArrayList<Double>());
      }
      // ajouter la donnée
      map.get(date).add(value);
    }
     
    // afficher le résultat
    for(Date date : map.keySet()) {
      System.out.println(date + " => " + map.get(date))
    }
    Deux questions :
    - est-ce que ça te convient comme première étape ?
    - est-ce que tu vois comment faire une Map<Date, Double> qui contient les moyennes, à partir de ça ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    Merci thelvin,
    ça m'aide de trouve un piste pour avancer
    je vais essayer

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Si tu es motivé, tu pourrais essayé quelques chose de ce genre si (java 8 obligé) :

    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
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
     
    public class dudul {
     
    	public static void main(String[] args) {
     
    		List<convert> list_initiale = new ArrayList<>();
     
    		list_initiale.add(new convert(318,0.98734f));
    		list_initiale.add(new convert(318,0.99074f));
    		list_initiale.add(new convert(318,1.00000f));
    		list_initiale.add(new convert(318,1.06250f));
     
    		list_initiale.add(new convert(324,0.00000f));
    		list_initiale.add(new convert(324,0.10000f));
    		list_initiale.add(new convert(324,0.20000f));
    		list_initiale.add(new convert(324,0.30000f));
     
    		// Regroupe par date et cree une liste pour chaque entrée.
    		Map<Integer, List<convert>> list_initialeByDate = list_initiale.stream().collect(Collectors.groupingBy(p -> ((convert) p).getDate()));
    		// Pour chaque entrée execute la sous fonction entre les {}
    		list_initialeByDate.forEach((date,valeur) -> {
    			// Fait une moyenne sur la valeur p.getValeur() pour chaque date k
    			Double averageAge = valeur.stream().collect(Collectors.averagingDouble(p -> ((convert) p).getValeur()));
    			System.err.println(date+ "==" +averageAge);  
    		});
     
    		System.err.println("Autre moyen sans le ->");
    		// Alternative au cas ou...
    		list_initialeByDate.forEach(dudul::methode_moyenne);
     
    	}
     
    	public static void methode_moyenne(Integer date, List<convert> valeur)
    	{
    		Double averageAge = valeur.stream().collect(Collectors.averagingDouble(p -> ((convert) p).getValeur()));
    		System.err.println(date+ "==" +averageAge);  
    	}
     
     
    }
    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 class convert {
    	public int date; // Je triche un peu ...
    	public float valeur;
    	public convert(int i, float d) {
    		date=i;
    		valeur=d;
    	}
    	public int getDate() {
    		return date;
    	}
    	public void setDate(int date) {
    		this.date = date;
    	}
    	public float getValeur() {
    		return valeur;
    	}
    	public void setValeur(float valeur) {
    		this.valeur = valeur;
    	}
     
     
    }
    ps : J'ai modifié Date par Integer pour simplifier
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    Merci wax78

Discussions similaires

  1. [XL-2003] recuperation d'une valeur d'un option bouton vers une cellule
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/06/2009, 21h16
  2. Copier une BDD SQL d'un Pc vers un autre PC
    Par wisemanvsfatboy dans le forum Réplications
    Réponses: 1
    Dernier message: 26/09/2008, 13h57
  3. copier une ligne entière d'un tableau vers un autre
    Par ktulu77 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 15/09/2008, 09h12
  4. Réponses: 1
    Dernier message: 28/03/2008, 21h37
  5. Réponses: 4
    Dernier message: 25/10/2007, 14h37

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