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 :

Remplacer une Hashtable par une HashMap


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 59
    Points
    59
    Par défaut Remplacer une Hashtable par une HashMap
    Bonjour à tous,

    Après avoir lu la FAQ au sujet des Hashtable, je me suis dit que ça pourrais être bien que j'actualise mon code pour le remplacer par un HashMap. Mais ça marche pas et je ne pige pas pourquoi.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //La ligne que je remplace
    //Hashtable<String,String> env = new Hashtable<String,String>
    HashMap<String,String> env = new HashMap<String,String>();
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    //Quelques autres lignes du même genre que précedemment
    //pour paramètrer l'authentification, l'URL du serveur, etc etc
     
    Dircontext ctx = new InitialDirContext(env);
    C'est sur la dernière ligne que netbeans me signale une erreur:

    cannot find symbol
    symbol: constructor InitialDirContext(java.util.HashMap<java.lang.String,java.lang.String>)
    location: class javax.naming.directory.InitialDirContext

    J'avoue ne pas comprendre ce qu'il manque, car il n'y avait aucune erreur avant que je ne remplace la ligne hashtable par la ligne hashmap.

    D'avance merci pour toute suggestion et explication

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    C'était une bonne idée, mais le constructeur que tu utilises (de "InitialDirContext"...) prend en paramètre une "Hashtable" : pas une "HashMap" ; donc tu n'as pas le choix!

    http://java.sun.com/j2se/1.3/docs/ap...ructor_summary


  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 59
    Points
    59
    Par défaut
    Grumpffff, merci, j'avais pas vu

    Etant donné que InitialDirContext n'est pas deprecated, je suppose qu'il n'y à pas de constructeur suceptible de le remplacer, vrai ou pas?

  4. #4
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Citation Envoyé par scolyo
    Etant donné que InitialDirContext n'est pas deprecated, je suppose qu'il n'y à pas de constructeur suceptible de le remplacer, vrai ou pas?
    C'est vrai, mais pas de problème (et gardant l' "optimisation" issue de l'utilisation d'une HashMap) : car tu peux instancier une Hashtable <<à partir>> de ta HashMap...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Map env = new HashMap();
    // on travaille dessus et ça va plus vite
    Hashtable tmp = new Hashtable(env);
    // on obtient ce qu'il faut pour la suite
    Dircontext ctx = new InitialDirContext(env);

  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
    Salut,


    Il ne faut pas vouloir remplacer Hashtable à tout prix !
    La différence c'est que HashMap n'est pas synchronizé et est donc potentiellement plus performante en exécution simple thread...

    Or il existe dans l'API un grand nombre de classe qui neccessite des Map synchronizé et qui utilise donc des Hashtable (même chose pour les List avec les Vector).

    Donc dans ce cas il faut continuer à utiliser Hashtable

    a++

  6. #6
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 59
    Points
    59
    Par défaut
    ça marche mieux avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DirContext ctx = new InitialDirContext(tmp);
    sinon, j'ai la même erreur.

    Merci encore pour ton aide, c'est sympa, je ne pensais pas qu'on pouvais passer aussi facilement d'un hashtable à un hashmap

  7. #7
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 59
    Points
    59
    Par défaut
    désolé Adiguba,

    J'ai posté en même temps que toi, merci pour l'info, je ne savais pas ça non plus.

    C'est galère quand même toutes ces évolutions, surtout quand on débute

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

Discussions similaires

  1. [XL-2007] [FORM] remplacer la valeur d'une cellule par une autre
    Par coldavires dans le forum Excel
    Réponses: 7
    Dernier message: 21/01/2010, 22h34
  2. Remplacer une lettre par une autre dans une cellule
    Par Philippe76 dans le forum Excel
    Réponses: 1
    Dernier message: 09/01/2010, 21h26
  3. [PROC] Remplacer un point par une virgule dans une Proc Tabulate
    Par PAULOM dans le forum SAS Base
    Réponses: 2
    Dernier message: 20/08/2009, 08h36
  4. [Toutes versions] Remplacer "#N/A" par une valeur par défaut
    Par canary dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/05/2009, 11h23
  5. [RegEx] Remplacer dernière occurence d'une chaine par une autre
    Par webjoujou dans le forum Langage
    Réponses: 3
    Dernier message: 12/11/2008, 17h58

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