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

GWT et Vaadin Java Discussion :

HashMap class IsSerializable


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut HashMap class IsSerializable
    Bonjour,

    J'essay d'utiliser des superclass de Map. en prenant comme clé une class qui est implement isserialisable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		Map<Noeud,Noeud> parents = new HashMap<Noeud,Noeud>();
    Et il est impossible de récupérer les données en utilisant un get(key). Je pense que ça vient du fait que ma class Noeud est isserialisable. Pour pouvoir utiliser le HashMap je suis obligé de convertir la class Noeud en String. Mais je trouve pas ce procédé très propre. N'existe t-il pas une autre solution?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    sans entrer dans GWT, tes Noeuds clé sont bien immutable?

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut
    immutable? c'est à dire?

    Voila ma class Noeud:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class Noeud implements IsSerializable
    {
    	private int x;
    	private int y;
     
    	public Noeud (){}
     
    	public Noeud (int x, int y){
    	  this.x=x;
    	  this.y=y;
    	}
     
    	public int getX() {
    		return x;
    	}
     
    	public void setX(int x) {
    		this.x = x;
    	}
     
    	public int getY() {
    		return y;
    	}
     
    	public void setY(int y) {
    		this.y = y;
    	}
     
    	public String toString()
    	{
    		return x+","+y;
    	}
    	public boolean equals(Point a)
    	{		
    		return (x==a.getX() && y==a.getY());
    	}
     
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ca veux dire qu'elle ne change plus après être ajoutée à la hashmap.

    Note: dans ton cas, je vois déjà un problème, tu redéfini equals mais pas hashcode. Hors pour que hashmap fonctionne, il faut que si a.equals(b), alors a.hashcode()==b.hashcode() !

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut
    Si je fais ca c'est mieu?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public class Noeud implements IsSerializable
    {
    	private int x;
    	private int y;
     
    	public Noeud (){}
     
    	public Noeud (int x, int y){
    	  this.x=x;
    	  this.y=y;;
    	}
     
    	public int getX() {
    		return x;
    	}
     
    	public void setX(int x) {
    		this.x = x;
    	}
     
    	public int getY() {
    		return y;
    	}
     
    	public void setY(int y) {
    		this.y = y;
    	}
     
    	public String toString()
    	{
    		return x+","+y;
    	}
    	public boolean equals(Noeud a)
    	{		
    		return a.hashCode()==hashCode();
    	}
    	public int hashcode() {
    		return x*100+y;
    	}
     
    }

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 411
    Par défaut
    Je maitrise pas l'utilisation du hasCode :/

    J'y arrive pas!

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par totofe Voir le message
    Si je fais ca c'est mieu?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public boolean equals(Noeud a)
    	{		
    		return a.hashCode()==hashCode();
    	}	
    }
    Non, c'est l'implémentation par défaut de equals là. Si t'as deux noeuds avec les mêmes x,y, mais des instances différentes, ils vont poser problème car pas égaux (hashcode différents).
    un implémentation sommaire serait, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public boolean equals(Noeud a)
    	{		
    		return (x==a.getX() && y==a.getY());
    	}
            public int hashcode (){
                return getX() | (getY()<<16);
            }
    }

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

Discussions similaires

  1. Fuites mémoire dans une classe "java.util.HashMap$Entry"
    Par ladyingold dans le forum Collection et Stream
    Réponses: 19
    Dernier message: 10/02/2012, 15h51
  2. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  3. Réponses: 1
    Dernier message: 24/08/2009, 12h03
  4. Hashmap, hashset et classes !
    Par helmutobrian dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 16/03/2009, 22h11
  5. Réponses: 31
    Dernier message: 30/03/2006, 16h57

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