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 :

Chercher une valeur dans un Vecteur


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 46
    Points
    46
    Par défaut Chercher une valeur dans un Vecteur
    Bonjour à tous, je souhaiterai trouver une fonction qui me permet de trouver une valeur dans une collection en fonction de 2 paramètres.

    Voici ce que je souhaite faire, j'ai par exemple une classe qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Roulement {
    	private int idSemaine;
    	private int idJour;
    	private String maValeur;
    }
    J'ai donc créé un vecteur de cette classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<Roulement> vRoulement = new Vector<Roulement>();
    Voila, la question est assez simple, je souhaiterai retrouver dans mon vecteur la valeur "maValeur" en fonction des paramètre "idSemaine" et "idJour".
    J'ai essayé avec un objet de type Hashtable (clé, valeur) mais seulement mon problème est que j'ai dans cet exemple 2 clés.
    Pouvez vous me donner un conseil? Est-il possible de garder cet objet de type Vector et d'utiliser un algorithme de recherche?

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Pour la Hashtable (ou HashMap, si tu n'as pas de souci de synchronisation ça sera mieux), tu peux définir une classe "clé" qui contient idSemaine et idJour, implémenter hashCode et equals à partir des deux valeurs, et faire une Map<TaCle, Roulement>.

  3. #3
    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,


    Sinon il suffit de parcourir le Vector à la recherche du premier élément correspondant...

    a++

    PS : Pourquoi utiliser un Vector au fait ???

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 398
    Points : 710
    Points
    710
    Par défaut
    Vector est deprecated

    sinon, une methode qui prend en parametre des deux clés, qui parcours le Vecteur est renvoie la valeur quand les clés correspondantes ...

  5. #5
    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
    Citation Envoyé par franck06 Voir le message
    Vector est deprecated
    Non Vector nest pas déprécié... Par contre elle est synchronisée (ce qui s'avère trop souvent inutile) et elle possède une API redondante...

    Il peut être nécessaire de l'utiliser dans certains cas, mais dans la majorité des cas autant passer par une ArrayList...

    a++

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    Sinon il suffit de parcourir le Vector à la recherche du premier élément correspondant...

    a++

    PS : Pourquoi utiliser un Vector au fait ???
    En fait j'ai pris pour habitude de charger les données des tables de ma BD dans des Vector. Je trouve qu'ils sont très simple à utiliser et très pratique pour initialiser des JTable que j'utilise beaucoup.

    Effectivement j'ai essayé de parcourir le vector pour rechercher la valeur souhaité, mais le temps d’exécution est assez long.
    Le principe de mon algorithme est une boucle pouvant faire jusqu'à 2000 tours. A chaque tour je récupère l'index de ma semaine et de mon jour et je dois trouver la valeur. Pour l'instant je vais chercher la valeur dans la table de ma base de données, mais le temps d'exécution est la aussi assez long.

    Voici un exemple de ce que j'essaye de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    while (calendar.getTime().compareTo(dateFin) == 0 || calendar.getTime().before(dateFin)) {
        short idSemaine = ((Fonction.getNumberOfDaysInPeriode(dateInc, calendar.getTime()) / 7) % nbWeekOfRoulement) + 1;
        short idJour = Fonction.getNumberDayOfWeek(calendar.getTime()); 
     
        // pour l'instant sur chaque tour de boucle, je vais consulter la BD, pas top au niveau perf
        // ici il serait plus rapide je pense de rechercher dans un vector intialisé au préalable
        String maValeur = connex.selectValeurByRoulement(idSemaine, idJour);
     
        // ensuite j'enregistre la valeur dans le planning						
        connex.updateValeurPlanning(calendar.getTime(), maValeur);
     
        calendar.add(Calendar.DATE, +1);
    }
    Merci à tous pour vos réponse.
    Je vais essayer de voir des exemples de tri : tri a bulle, ...

  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 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RomG7 Voir le message
    Je trouve qu'ils sont très simple à utiliser
    Les List sont encore plus simple (pas de méthode en double )
    Citation Envoyé par RomG7 Voir le message
    et très pratique pour initialiser des JTable que j'utilise beaucoup.
    Ca c'est une bonne raison... Malheureusement Swing utilise massivement les Vectors (alors qu'il n'y a aucune raison de synchroniser )

    Citation Envoyé par RomG7 Voir le message
    Effectivement j'ai essayé de parcourir le vector pour rechercher la valeur souhaité, mais le temps d’exécution est assez long.
    Dans ce cas il faudrait envisager de stocker cela dans une Map, afin d'avoir un accès rapide via la clef...


    a++

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Malheureusement Swing utilise massivement les Vectors (alors qu'il n'y a aucune raison de synchroniser )
    Je ne comprends pas le terme un Vector est synchronisé. Qu'est-se que cela signifie?

    Je vais essayer de me documenter sur les Map.

    Encore merci pour vos conseil.

  9. #9
    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
    Citation Envoyé par RomG7 Voir le message
    Je ne comprends pas le terme un Vector est synchronisé. Qu'est-se que cela signifie?
    Cela signifie qu'on peut l'utiliser depuis plusieurs threads à la fois sans que cela ne pose problème, mais cela implique un petit coût supplémentaire.

    Dans 90% des cas c'est inutile car on va l'utiliser dans le même thread...

    a++

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    ..., mais cela implique un petit coût supplémentaire.
    Pour résumer, encore une histoire d'argent !!!

    Ces explications m'aident petit à petit a passer du coté obscur de Java.
    ++

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

Discussions similaires

  1. Chercher une valeur dans un tableau
    Par christel1982 dans le forum ASP
    Réponses: 5
    Dernier message: 14/09/2006, 09h01
  2. Réponses: 10
    Dernier message: 23/05/2006, 17h42
  3. Chercher une valeur dans la base de registre
    Par Sallie dans le forum MFC
    Réponses: 9
    Dernier message: 19/05/2006, 12h57
  4. Insérer une valeur dans un vecteur
    Par jalilv6 dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 07h04
  5. Supprimer une valeur dans un vecteur
    Par jalilv6 dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2006, 09h33

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