Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1217 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Comportement des Set... pas compris...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comportement des Set... pas compris...

n°1075563
brisssou
8-/
Posté le 08-05-2005 à 16:08:35  profilanswer
 

Bonjour,
 
je fais appel aux grands Javateux qui trainent sur ce forum.
 
Je viens de me trouver confronté à un comportement étrange des Set.
 
la méthode contains ne fonctionnait pas. Elle renvoyait faux pour un objet effectivement présent dans le set, je l'ai vérifié avec un iterator et en applicant la methode equals sur chacun des éléments du set.
par la même la méthode remove foirait de plus belle. J'imagine qu'elle s'appuie sur contains, donc je n'était pas choqué.
 
J'ai utilisé une ArrayList, et hop! plus de soucis.
 
Alors, pourqoui donc ? java.util.Set ne respecte pas la définition de java.util.Collection ?
 
qu'est-ce que j'ai raté ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le 08-05-2005 à 16:08:35  profilanswer
 

n°1075580
souk
Tourist
Posté le 08-05-2005 à 17:05:19  profilanswer
 

a tout hasard, tu as redefini equals pour ta classe, mais tu as oublie de redefinir hashcode ? [:itm]

n°1075581
sircam
I Like Trains
Posté le 08-05-2005 à 17:05:44  profilanswer
 

Tu as fumé ?
 

Code :
  1. Set s = new HashSet();
  2.         s.add(new Integer(4));
  3.         s.add("hello" );
  4.         System.out.println(s.contains("foo" ));
  5.         System.out.println(s.contains("hello" ));
  6.         System.out.println(s.contains(new Integer(4)));
  7.         System.out.println(s.contains(new Integer(5)));


 

Code :
  1. false
  2. true
  3. true
  4. false


 
Fais voir ton code...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1075586
brisssou
8-/
Posté le 08-05-2005 à 17:19:31  profilanswer
 

Code :
  1. boolean retVal;
  2.  synchronized (map) {
  3.   List list = (List) map.get(new Integer(msg.getNoTransac()));
  4.   if (list == null || list.isEmpty()) {
  5.    map.notify();
  6.    throw new RuntimeException("Aucun acquitement n'est attendu. " );
  7.   }
  8.   HostDesc host = new HostDesc(msg.getAddrSource().getHostAddress(),
  9.     +msg.getPortSource());
  10.   if (!list.contains(host)) {
  11.    map.notify();
  12.    throw new RuntimeException(
  13.      "Acquitement non attendu de cet hôte " + host);
  14.   }
  15.   list.remove(host);
  16.   retVal = list.isEmpty();
  17.   map.notify();
  18.   return retVal;
  19.  }


tu remplaces List par Set, et ça marchait pô...
 
mais j'ai pas redéfini hashcode(), c'est vrai... j'ay ai pas pensé...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Comportement des Set... pas compris...

 

Sujets relatifs
Aide au débugage - Comportement bizare d'une fonction...Configurer le comportement des Jobs de Quartz
PHP : Comportement incompréhensible de array_intersectDifférence de comportement sur 2 environnements
[MFC] Gestion des clics : comportement étrange...ini_set
set_time_limit et include...???Dominating set dans un graphe.
php set_time_limit[ Dos Batch ]Set & Type
Plus de sujets relatifs à : Comportement des Set... pas compris...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR