Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : la méthode hashcode() [ Divers / Débutant(e) ] (limalima)

dimanche 14 décembre 2008 à 16:15:05 | la méthode hashcode()

limalima

Bonjour à tous,
je suis en train d'étudier les collections, je n'arrive pas bien à comprendre la méthode hashcode(), si quelqu'un peut me donner quelques indications et informations sur cette méthode,merci.

dimanche 14 décembre 2008 à 19:25:54 | Re : la méthode hashcode()

uhrand

Réponse acceptée !
"equals" et "hashCode" vont ensemble: deux objets sont logiquement égaux, si leurs méthodes "hashCode" retournent chacune la même valeur (si ont n'implémente pas "equals" et "hashCode", chaque objet est égal uniquement à lui-même). Voici un exemple très simple:

public class MyElement {
    private String name;
    private int id;
    public MyElement(String name, int id) {
        this.name = name;
        this.id = id;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final MyElement other = (MyElement) obj;
        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
            return false;
        }
        if (this.id != other.id) {
            return false;
        }
        return true;
    }
    @Override
    public int hashCode() {
        int hash = 3;
        hash = 97 * hash + (this.name != null ? this.name.hashCode() : 0);
        hash = 97 * hash + this.id;
        return hash;
    }
    @Override
    public String toString() {
        return "name: " + name + "  id: " + id;
    }
}


Le code suivant ne sortira qu'un seul élément:

Set set = new HashSet();
set.add(new MyElement("1", 1));   
set.add(new MyElement("1", 1));
System.out.println(set);

parce qu'un Set ne peut pas contenir des doublons.
Par contre, si on n'implémente pas "equals" et "hashCode", ce même code sortira deux éléments!

mercredi 24 décembre 2008 à 19:30:49 | Re : la méthode hashcode()

saif87

bonsoir
y'a t'il monsieur un rapprot entre hashcode et eaquals dans hashtable
s'il y'a voici mon code et s'il vous plait montrer comment les inclures dans ceci
merci
import java.util.*;
class Hashtable1
{
    Hashtable m=new Hashtable();
   
    public boolean remplirHash(String s,Client c)
    {
        if(!m.containsKey(s))
        {
            m.put(s,c);
            return true;
        }
        else
            {   
                System.out.println("cle deja utilise");
                return false;
            }
       
    }
        public void affichage() {
                    Enumeration nb=m.keys();
                    Object key;
             while(nb.hasMoreElements()) {
                          key=nb.nextElement();
                        Client value=(Client) m.get(key);
                     System.out.println("cle = "+ key + "" + value );
                                         }
                            }

    Client getClient(String cle)
    {
        if(m.containsKey(cle))
        {
            Client value=(Client)m.get(cle);
            return value;
        }
        else
            return null;
    }
           
       
   

}



mercredi 24 décembre 2008 à 21:42:06 | Re : la méthode hashcode()

uhrand

Les objets utilisés comme clés doivent implémenter les méthodes hashCode et equals. Ici, les clés sont du type String et la classe String a déjà implémenté les méthodes hashCode et equals. Donc, tu n'as rien à progrmmer toi-même dans ce contexte!



Cette discussion est classé dans : méthode, hashcode


Répondre à ce message

Sujets en rapport avec ce message

Méthode Protected [ par syndrael ] Voici mon code et j'aimerai pouvoir accéder à getTimeInMillis(), mais j'ai une erreur. Pouvez vous m'aider ?GregorianCalendar greday = new GregorianCa le random en java [ par Waaagh ] Bonjour, Est ce que quelqu'un aurait une idée pour optimiser le code suivant (ou aurait un autre a me proposer) :Math.abs((new Random()).nextInt nombre de ligne JTextArea [ par kramp ] j'aimerais savoir comment récupérer le nombre de lignes affichées dans une JTextArea qui a été construite avec un String et la méthode setLineWrap(tru Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Tableaux et Méthodes [ par criss ] salut, une idée comment procéder ici?? ont nous donne le code de départ et on va remplir le vide avec les conditions qu'ils lesdemande// écrire ICI le taille de fichier [ par regi ] Existe t'il une méthode pour convertir simplement la taille en octet d'un fichier obtenue par la méthode "length()" de celui ci en mega octet (ou mega mouseListener, déclaration d'events [ par aska ] Je réalise un programme avce une interface graphique souri avec l'utilisateur.Dans une classe point , j'ai implementer les mouseXXX , la méthode mouse


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.