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 :

Quel type de liste choisir ? (Vector, ArrayList, ...)


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier Avatar de dinver
    Profil pro
    Inscrit en
    décembre 2002
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2002
    Messages : 122
    Points : 108
    Points
    108
    Par défaut Quel type de liste choisir ? (Vector, ArrayList, ...)
    Bonjour,

    J'ai un objet de type String[2] Personne donc grossomodo un tableau à 3 cases qui va contenir nom, prénom et date de naissance.
    Je veux créer un vecteur de personne à fur et à mesure de l'exécution de l'application. Donc, mon vecteur sera rempli dynamiquement. Je veux par la suite chercher dans le vecteur les personnes qui s'apellent "Eric". Donc, ce que je vais faire c'est un parcours de tout le vecteur et comparer.

    Je demande aux membres expériementés est-ce qu'il y a pas de méthodes plus rapides en terme de recherche. Parce que si j'imagine que j'ai 1000 personnes ça va être lourd à parcourir toute la liste. Sinon, est ce qu'il vaut mieux utiliser un Vector ou une ArrayList ou peut-être une autre class.

    Merci pour l'aide.

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Pour des raisons de compatibilité future, il est préconisé d'utiliser ArrayList plutôt que Vector.

  3. #3
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : mars 2004
    Messages : 498
    Points : 628
    Points
    628
    Par défaut
    Utilise une Map.

    En clef tu pourras mettre le nom, et en valeur les autres trucs.

    si tu veux récupérer Eric il suffira de faire :

    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 167
    Points : 120
    Points
    120
    Par défaut
    Regardes la :

    http://java.developpez.com/faq/java/...angage_donnees
    Ca devrait répondre a ta question ;-)
    La naissance est le seul fruit du hasard

  5. #5
    Membre régulier Avatar de dinver
    Profil pro
    Inscrit en
    décembre 2002
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2002
    Messages : 122
    Points : 108
    Points
    108
    Par défaut
    Je vous remercie pour les réponses rapides et l'aide.
    Je vais voir Map ça me parait très cool de faire une get aussi facilement.

    Autant pour moi qui toujours demande de lire la faq avant de poster une question . Elle est très bien faite.

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Pour la map y a un Hic !
    Tu ne récupèreras pas tous les gens qui s'appellent "eric" mais seulement celui pour qui tu as associé la clé "eric".

    T'es mieux avec une liste.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  7. #7
    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 015
    Points
    23 015
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par iohack
    Pour des raisons de compatibilité future, il est préconisé d'utiliser ArrayList plutôt que Vector.
    Il n'y a aucun problème de compatibilité avec Vector...

    La différence c'est que Vector est 'synchronized' alors que ArrayList ne l'est pas. Donc c'est potentiellement moins performant dans une utilisation mono-thread...

    De plus depuis l'API de Collections de Java 1.2, il est préférable de "cacher" l'implémentation en utilisant l'interface List ou Collection (afin de ne pas impacter toute l'application en cas de changement). Et pour utiliser une List 'synchronized' il est préférable d'utiliser Collections.synchronizedList() qui a l'avantage de permettre n'importe quelle implémentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List list = Collections.synchronizedList( new LinkedList() );
    Donc il est fortement conseillé d'utiliser ArrayList à la place de Vector (mis à part la synchronisation, ces deux classes fonctionnent de la même manière).

    Citation Envoyé par Satch
    Utilise une Map.

    En clef tu pourras mettre le nom, et en valeur les autres trucs.
    Le problème c'est que cette solution est très bien pour une recherche sur un critère... mais dès que tu veux rechercher sur plusieurs critère cela peut être complexe à gérer...

    Citation Envoyé par natha
    Tu ne récupèreras pas tous les gens qui s'appellent "eric" mais seulement celui pour qui tu as associé la clé "eric".
    C'est possible si tu fais une Map de List... mais comme je l'ai dit cela peut devenir complexe à gérer...

    Si les listes ne sont pas énorme, un simple parcours itératif devrait faire l'affaire... Il ne te reste plus qu'a utiliser un principe similaire aux Comparator pour retrouver les éléments, par exemple : http://www.developpez.net/forums/viewtopic.php?t=435868

    a++

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

Discussions similaires

  1. quel type de donnée choisir pour simuler le type Currency
    Par maamar1979 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/02/2007, 12h44
  2. Quel type de table choisir pour la création d'un forum
    Par Xunil dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 19/11/2006, 12h40
  3. Quel type d'argument choisir ?
    Par R'SKaP dans le forum C++
    Réponses: 8
    Dernier message: 18/11/2005, 23h59
  4. Quel type de projet choisir pour incorporer directX9...
    Par Coderm@n dans le forum DirectX
    Réponses: 6
    Dernier message: 02/08/2004, 13h24

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