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 :

suppression de donnée dans une Hashtable


Sujet :

avec Java

  1. #1
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut suppression de donnée dans une Hashtable
    bonjour, j'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Hashtable distant = md5distant.getmd5();
    Enumeration de = distant.elements();
     
     while(de.hasMoreElements())
     {
                Object key=de.nextElement();
                Object value=distant.get(key.toString());
                distant.remove(value);
     }
    En mode pas à pas, Key prend bien a chaque passage une valeur dans ma hashtable mais "Object value" vaut toujours null ce qui me retourne des nullpointer exception.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "main" java.lang.NullPointerException
    Ou commets je une erreur svp???

    merci pour vos lanternes

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Bon j'ai plus l'habitude de hashmap que hashtable, mais là tu récupère la clé obj, et tu fais une recherche avec obj.toString(). Ce n'est donc la meme clé, donc ca te renvoit null.

    Mais là, tu enlèves tous les objet de ta table, pourquoi ne pas faire simplement un clear ?

  3. #3
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut
    parce qu'en réalité je vais comparer deux hashtable et supprimer les lignes qui sont identiques.

    Pour que cela soit plus parlant:

    hashtable 1 : contient des noms de fichier distant et le md5 associé.
    hashtable 2: contient le nom des mêmes fichiers téléchargés et du md5 en local.

    de cette façon, je vais pouvoir valider que les donnée de mon serveur et celle en local sont identique. S'il y a une coupure réseau ou un fichier corrompu, alors les md5 ne correspondront pas et je pourrais de nouveau télécharger le fichier incriminé.

    ennui, c'est que j'arrive déjà pas a purger ma hashtable

    j'avais fait le test

    Object value=distant.get(key.toString());
    et
    Object value=distant.get(key);

    ces deux lignes me retourne un nullpointer erf.

  4. #4
    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
    La méthode "elements()" te donne la liste des valeurs, pas des clés ! Le fonctionnement que tu obtiens est donc normal.
    Mais si tu veux simplement vider la HashMap, utilise la méthode appropriée : "clear()"
    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.

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    Le code n'est pas correct:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Enumeration de = distant.elements();
    La méthode elements() retourne la liste des valeurs de la hashtable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Object key=de.nextElement();
    Object value=distant.get(key);
    Vue que 'de' est une énumeration de valeur, la variable 'key' est en fait une valeur. Donc la recherche dans la hashtable retourne null.

    Pour faire la même chose, il faudrait appeler la méthode keys() à la place de elements():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Enumeration de = distant.keys();

  6. #6
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut
    euhhh ben oui forcement

    merci beaucoup

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 07/07/2010, 16h30
  2. Suppression de données dans une table
    Par Debault dans le forum C#
    Réponses: 3
    Dernier message: 30/07/2009, 10h21
  3. Réponses: 3
    Dernier message: 12/03/2009, 10h37
  4. Réponses: 3
    Dernier message: 03/07/2008, 14h32
  5. suppression de données dans une listbox
    Par Shadow5 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 12/03/2008, 19h15

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