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 :

Iterator sur ArrayList de Floats et Integer


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 129
    Points : 46
    Points
    46
    Par défaut Iterator sur ArrayList de Floats et Integer
    Bonjour à tous,

    Je suis entrain de parcourir aun ArrayList de Integer et de Float.
    J'ai voulu faire le plus simple, convertir le tout (pd l'iteration) en float.
    (ça ne me gene pas pour la suite du traitement).

    En déclarant un Iterator:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     List<Float> elementNumValues =new ArrayList<Float> (array1);
     for (Iterator value =arrayValues.iterator(); value.hasNext();) {
                  Float currentValue=(Float) value.next();
    où array1 est arrayList ayant des valeurs de type Integer et Float.
    L'execution de ce code me génere une erreur
    java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Float.

    C'est quoi le problème, normalement j'ai le droit de convertir des Integer vers Float?

    Juste à titre de précision, c'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    Float currentValue=(Float) value.next();
    qui me génère l'erreur

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Si ceci est vrai :
    Citation Envoyé par fafoula Voir le message
    où array1 est arrayList ayant des valeurs de type Integer et Float.
    Alors tu devrais déjà avoir un warning sur cette ligne, car elle est fausse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     List<Float> elementNumValues =new ArrayList<Float> (array1);
    Un List<Float> ne devrait pas pouvoir contenir d'Integer !!!!

    Je ne sais pas comment tu as déclarer array1, mais le plus simple serait que ce soit un List<Number> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (Number number : array1) {
        float value = number.floatValue();
        ...
    }

    a++

  3. #3
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 129
    Points : 46
    Points
    46
    Par défaut
    en fait array1 est le résultat d'une fonction gynérique que j'ai implémenté qui me renvoie
    array1=List<typeNumeric> getValues(); ou typeEnv est une fois de type Float ou de Integer.
    Je n'ai pas du warning à coté de cette ligne

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Donnes du code compilable alors... parce que c'est pas très clair.


    a++

  5. #5
    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
    Citation Envoyé par fafoula Voir le message
    C'est quoi le problème, normalement j'ai le droit de convertir des Integer vers Float?
    Convertir oui, tu peux faire ça par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Integer i = 8;
    Float f = i.floatValue();
    Convertir, oui. Convertir implicitement, non.

    Java convertit implicitement int vers float. Mais pas Integer vers Float.
    int et Integer sont deux types différents.
    De même, float et Float sont deux types différents.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [nested:iterate] sur une ArrayList de String
    Par kij dans le forum Struts 1
    Réponses: 2
    Dernier message: 24/10/2007, 09h46
  2. tri sur arraylist
    Par david06600 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 03/10/2006, 10h24
  3. Itération sur une liste d'éléments
    Par anitshka dans le forum Prolog
    Réponses: 3
    Dernier message: 05/07/2006, 22h49
  4. [Struts] logic:iterate sur HashMap
    Par romdelf dans le forum Struts 1
    Réponses: 36
    Dernier message: 02/12/2005, 17h03
  5. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11

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