begin process at 2010 03 20 15:49:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

la méthode hashcode()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

la méthode hashcode()

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ée 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...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales