Conseil de structures de données

Conseil de structures de données - Java - Programmation

Marsh Posté le 26-06-2002 à 09:26:01    

Salut,  
 
1) Je programme en Java et j'ai besoin d'un conseil pour le choix d'une structure de données.  
Je cherche une structure de données du type Vector mais avec laquelle on puisse insérer des éléments directement à une position précise .....  
Vous me direz "Vector dispose d'une méthode add(index,Object) ..."  
Oui je l'ai essayé, et elle ne marche pas du tout comme je veux !!!!  
Si la première insertion dans mon vecteur se fait à l'index 2:  
 
Vector v = new Vector();  
v.add(2,new Integer(1));  
 
CA NE MARCHE PASSSSS .....  
 
sauf si j'ai fait auparavant un :  
 
Vector v = new Vector();  
add(0,new Integer(1));  
add(1,new Integer(1));  
add(2,new Integer(1));  
 
Quel intérêt de disposer d'une méthode d'ajout à une position donnée si on est obligé d'avoir au préalable rempli les cellules précédentes ?  
Vector n'est donc pas la structure de données qui me convient ....  
Je cherche donc une structure de données avec laquelle je pourrais insérer des objets à des positions différentes, mais sans avoir forcément déja inséré aux positions précédentes ... A terme il n'y aura pas de trous (si j'ai 5 objets à insérer, alors forcément ils seront insérés entre l'index 0 et l'index 4)  
Je vous remercie d'avance de vous pencher sur mon problème .....  
Et si vous pouvez m'expliquer pourquoi ca marche pas avec Vector je suis pas contre parce que j'ai beau relire l'API je comprends pas ...  
 
2) Comment connaitre la taille d'un ResultSet (nombre d'itérations fetch que l'on fera, cad nombre de row je crois)? J'ai essayé la méthode getFetchSize() de la classe ResultSet mais ca me renvoie 0 alors que le fetch que je fais après se fait sur plusieurs rows ....  
 
Sur ce !  
 
Krako !

Reply

Marsh Posté le 26-06-2002 à 09:26:01   

Reply

Marsh Posté le 26-06-2002 à 09:33:52    

Si tu connais la taille de ta structure, je te conseille un tableau tout bête....
 
Le Vector doit être vu comme une liste chainée, ça t'aidera à comprendre son comportement...ce n'est pas un tableau dynamique!
 
pour le resultset, moi je le parcours comme une Enumeration....
 

Reply

Marsh Posté le 26-06-2002 à 09:34:42    

de manière générale si tu veux une structure de donnée et qu'aucune structure standard ne correspond à ta spécification, rien ne t'empêche d'en créer une toi meme.
 
Pour le vecteur c'est normal. C'est une structure dynamique qui te permet d'insérer des objets n'importe ou
 
En gros si tu as au sein d'un vecteur
 
A, X, Y
 
et que tu veux insérer B à l'index 2 tu auras
 
A, B, X, Y
 
Or toi tu veux écraser l'objet et ne pas déplacer les index. Il me semble que c'est possible mais il faut au moins qu'il y ait qqch dans ton vector a cet endroit là.
 
Ce que tu veux faire est assez simple et peut etre qu'il y a un objet standard pour ca. Sinon crée le toi meme ca doit pas etre compliqué.
 
Pour le nombre de row c'est ultra connu ce problème. Si mes souvenirs sont bon ca dépend du SGBD derrière mais avec MetaData il y a moyen lorsque le SGBD le supporte.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 26-06-2002 à 10:08:02    

Sinon, pour un vecteur qui aura 5 éléments au final, tu fais un truc comme ça :
 
 
Vector v = new Vector(5);
 
et ensuite :  
 
v.setElementAt(obj, i)
 
Et le tour est joué.
 
(ça marche aussi avec des ArrayList, etc...Mais pour un truc de taille fixe, tu a plus intérêt à utiliser un bête tableau, surtout si tes éléments sont tous du même type : tu te feras moins chier à les caster en sortie.
 
Ouala.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed