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

  FORUM HardWare.fr
  Programmation
  Java

  Différence entre size() et length() dans un java.util.BitSet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Différence entre size() et length() dans un java.util.BitSet

n°210349
Cherrytree
cn=?
Posté le 07-09-2002 à 15:58:48  profilanswer
 

Je suis pas sûr de comprendre la différence. Il y a une histoire de capacité utilisée, mais je vois pas très bien.

mood
Publicité
Posté le 07-09-2002 à 15:58:48  profilanswer
 

n°210356
Cherrytree
cn=?
Posté le 07-09-2002 à 16:15:57  profilanswer
 

C'est assez méchant comme objet, je m'explique :
 
J'ai fait un petit programme de test
 

Code :
  1. import java.util.BitSet;
  2. public class BitSetTest {
  3. public static void main(String[] args) {
  4.  BitSet bits = new BitSet(8);
  5.  for (int i = 0; i < 8; i++) {
  6.   if (i % 2 == 0)
  7.    bits.clear(i);
  8.   else
  9.    bits.set(i);
  10.  }
  11.  System.out.println("BitSet " + bits);
  12.  System.out.println("length: " + bits.length() + ", size: " + bits.size());
  13. }
  14. }


 
La sortie est assez surprenante :
 

BitSet {1, 3, 5, 7}
length: 8, size: 64


 
Déjà, le 64 me porte à croire que la méthode size() ne doit pas avoir une très grande utilité, à moins qu'elle ne cache des informations que je n'ai pas sû déceler.
 
Quant à length(), c'est assez piège pour le noter : il renvoit l'index de plus haut "true" + 1, autrement dit, si le dernier bit est à false, il n'en est pas fait mention, bien que pour le programmeur ce false puisse avoir une utilité (c'est mon cas).
 
Voilà.

n°210369
youdontcar​e
Posté le 07-09-2002 à 16:29:30  profilanswer
 

Cherrytree a écrit a écrit :

Déjà, le 64 me porte à croire que la méthode size() ne doit pas avoir une très grande utilité, à moins qu'elle ne cache des informations que je n'ai pas sû déceler.


apparemment chaque bit est stocké dans un byte. donc length = nombre d'éléments (ici nb de bits), size = taille occupée par l'objet.

n°210374
--greg--
Posté le 07-09-2002 à 16:42:00  profilanswer
 

ça serait pas plutot que size = poids du plus "grand" bit?
du genre le bit7 correspond à la valeur 64?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°210382
Cherrytree
cn=?
Posté le 07-09-2002 à 17:05:53  profilanswer
 

--greg-- a écrit a écrit :

ça serait pas plutot que size = poids du plus "grand" bit?
du genre le bit7 correspond à la valeur 64?



ça revient au même mais c'est ça.

n°210383
Cherrytree
cn=?
Posté le 07-09-2002 à 17:10:59  profilanswer
 

Par contre size, c'est plus dans l'esprit de ce que dit youdontcare. Car, si tu flippes quelques bits dans le BitSet, la méthode size renvoit quand même 64. C'est certainement lié à la construction de l'objet, mais il est surprenant de trouver une telle valeur, sachant que Java ne mise traditionnellement pas comme le C sur les sizeof(). On peut stocker quelle valeur entière dans un octet (byte pour les belges) ? 256 valeurs différentes... Mmmh, non, ce 64 me chiffonne.

n°210500
--greg--
Posté le 07-09-2002 à 23:58:28  profilanswer
 

ben si t'as un bitset de length=7, size=64, quels que soit l'etat des bits nan?
au fait tu te sers de ça pourquoi?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°210549
Cherrytree
cn=?
Posté le 08-09-2002 à 09:23:03  profilanswer
 

--greg-- a écrit a écrit :

ben si t'as un bitset de length=7, size=64, quels que soit l'etat des bits nan?
au fait tu te sers de ça pourquoi?



Pour représenter les locus d'un chromosome dans un algorithme génétique. Size en effet ne varie pas suivant l'état des bits, length par contre dépend du plus haut bit à 1.


---------------
Le site de ma maman
n°212862
_gtm_
Posté le 12-09-2002 à 13:49:49  profilanswer
 

Si ça se trouve, la taille doit être un multiple de 64 bits (peut-être à cause d'histoires d'alignement des mots en mémoire ?). Tu peux faire ton test jusqu'à 65 pour vérifier ?

n°212866
Cherrytree
cn=?
Posté le 12-09-2002 à 13:55:38  profilanswer
 

Je vais voir ça.


---------------
Le site de ma maman

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

  Différence entre size() et length() dans un java.util.BitSet

 

Sujets relatifs
[Java & Applet] comment redefinir la méthode update(graphics)?[java]comment vous feriez ca
[JAVA] Layout.... VERTICALJava message : dekoikimcause ???
[java] une icone ds une JList?[DEFINITION] Différence entre une archi 16bits et 32bits
[JAVA] Quel soft pour lire un fichier .class ?Recherche : Applet Java qui lise le VRML
Cherche Applet Java pour IRCInterface en JAVA
Plus de sujets relatifs à : Différence entre size() et length() dans un java.util.BitSet


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