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 :

vector et remplaçant


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut vector et remplaçant
    bonjour, j'ai vu que les Vector étaient "déprécié" dans la FAQ, or j'ai besoin de dimensionné une "List" (arraylist a priori) avant de la remplir, comment faire proprement ?

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    ArrayList dispose d'un constructeur qui permet d'initialiser avec une capacité : http://java.sun.com/j2se/1.4.2/docs/...ArrayList(int)

    Ensuite, ça s'utilise pareil qu'un Vector.

  3. #3
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Vector n'est pas vraiment déprécié (au sens Java), mais plutôt déconseillé pour deux raisons :
    • Son API n'est pas très propre (plusieurs méthodes en double).
    • Elle est thread-safe et donc potentiellement moins performante en mono-thread.


    De plus avec la "nouvelle" API de Collections de Java 1.2, il est plutôt conseillé d'utiliser Collections.synchronizedList() pour obtenir une instance thread-safe...


    La solution est donc bien de passé par une ArrayList, qui fonctionne de la même manière.

    a++

  4. #4
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    en fait niveau algo j'ai besoin d'un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    List l;
    int taille=...;
     
    l.clear();
    l.resize(taille);
    Pour i<-0 à taille-1 Faire
      l[i]=blabla;
    FinPour
    Je voudrais éviter de "perdre" mon objet en appelant à nouveau un constructeur sur ma liste.

    Enfin quand j'ai essayé avec ArrayList, il m'agrandissait la liste malgré l'appel au constructeur : ex je crée un liste de 10 éléments et j'en obtiens 15.

    edit : j'ai un "truc" bizarre dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            float perCent=1/2;
            int numInst=0, numJob, pCcurrent;
     
                numJob=(int) (perCent * 10);//=0.0 ????

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    T'es sûr que tu veux utiliser une liste ?

    Normalement, on ajoute les éléments d'une List via un add et pas à l'aide d'un indice.

  6. #6
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    En fait il me faut un tableau de taille variable, une liste correspond pas mal à la logique du programme...(en fait j'ai une liste mais je ne la remplie pas forcément séquentiellement d'où le dimmensionnement)

    Pour mon petit problème float*int=0, il y a une solution ?

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Tu as la méthode ensureCapacity pour augmenter la taille (et ça recopie l'existant précédent).

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par Rniamo Voir le message
    Pour mon petit problème float*int=0, il y a une solution ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numJob=(int) (perCent * 10f);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  9. #9
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    la vraie ligne c'est :

    numJob=(int) (Float.parseFloat(line[0]) * perCent);

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Et Float.parseFloat(line[0]) affiche quoi ?

  11. #11
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par Rniamo Voir le message
    la vraie ligne c'est :

    numJob=(int) (Float.parseFloat(line[0]) * perCent);
    Et le vrai problème, c'est quoi ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  12. #12
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    line[0] c'est "10", la conversion en float, int etc marche. Mais dès que je multiplie par perCent qui vaut 0.5 j'obtiens 0...au lieu de 5

    edit : je crois que j'ai trouvé : perCent=1/2; est une division entière donc renvoie 0...mea culpa. Par contre pourquoi quand j'écris float f=0.5; il me demande de caster ... il me dit que c'est un double en fait.

  13. #13
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Rniamo Voir le message
    line[0] c'est "10", la conversion en float, int etc marche. Mais dès que je multiplie par perCent qui vaut 0.5 j'obtiens 0...au lieu de 5
    T'es sûr que ça vaut 0.5. Tu l'as affiché avant ?
    Car ça m'étonnerait pas que 1/2 retourne 0

  14. #14
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ca vient de la valeur de "perCent", qui vaut zéro. L'initialisation est faite par un int. Ecrit plutôt :
    Ca fonctionnera mieux.

    EDIT : trop lent
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  15. #15
    Membre éclairé Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Par défaut
    oui merci, par contre netbeans me dit de caster tous mes float pourquoi (il les prend pour des double) ?

  16. #16
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Rajoute F juste après le nombre :

    0.5F
    0.8F
    3.22541256F

    ...

  17. #17
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par Rniamo Voir le message
    oui merci, par contre netbeans me dit de caster tous mes float pourquoi (il les prend pour des double) ?
    Par défaut, un nombre à virgule est considéré comme un double.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

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

Discussions similaires

  1. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 14h42
  2. vector et erase()
    Par gytr2 dans le forum SL & STL
    Réponses: 6
    Dernier message: 02/03/2004, 12h45
  3. equivalent Vector du jsp
    Par Djib dans le forum ASP
    Réponses: 4
    Dernier message: 05/12/2003, 08h07
  4. "vector" provoque "syntax error", malgré
    Par seenkay dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/08/2003, 03h21
  5. Réponses: 2
    Dernier message: 11/07/2003, 18h24

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