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

  FORUM HardWare.fr
  Programmation
  Java

  Faciliter le changement de ma structure de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faciliter le changement de ma structure de données

n°1345738
ikao2
okaïdi okaïda
Posté le 13-04-2006 à 09:47:35  profilanswer
 

Bonjour !
 
Je suis en train de créer une structure de données et je voudrai faire des tests entre plusieurs type d'implémentation.
Par exemple je voudrai faire des comparaison entre l'utilisation, dans ma sdd, de Vector/ArrayList, Hashtable/HashMap, etc...
 
j'utilise des méthodes compatibles entre les types, donc je peux passer de l'un à l'autre sans aucun problème.
 
Ma question concerne justement le passage rapide d'un type à un autre.
Par exemple je voudrai passer de :
 

Code :
  1. final public Hashtable uneTable = new Hashtable();


 
à  
 

Code :
  1. final public HashMap uneTable = new HashMap();


 
Le problème c'est que ce changement devrai s'appliquer à plusieurs dizaines d'endroits dans mon code. J'aurai donc voulu créer quelques chose qui, au final, agirait comme ca :
 

Code :
  1. UnType = Hashtable


 

Code :
  1. final public unType uneTable = new unType();


 
Quelqu'un aurait une idée ?
J'espère que vous avez compris ce que je veux :-)
 
Merci !

mood
Publicité
Posté le 13-04-2006 à 09:47:35  profilanswer
 

n°1345770
Bidem
Posté le 13-04-2006 à 10:09:07  profilanswer
 

HashMap et Hashtable utilisent l'interface java.util.Map.
Vector et ArrayList utilisent l'interface java.util.List
 

Code :
  1. List uneListe = new Vector();
  2. uneListe = new ArrayList();
  3. Map uneTable = new HashMap();
  4. uneTable = new Hashmap();

n°1345775
ikao2
okaïdi okaïda
Posté le 13-04-2006 à 10:15:33  profilanswer
 

Je crois que je n'ai pas été trés clair dans mes explications.
 
Je sais bien qui implémente qui. Mais je voudrais pouvoir passer d'une implémentation (Vector - Hashtable) à une autre (ArrayList - HashMap) facilement et rapidement, en évitant de reporter la modification à travers toutes mes classes.
 
C'est pourquoi j'aurai aimé qu'à chaque fois que je déclare/instancie un objet de type List et qu'à chaque fois que je déclare/instancie un objet de type Map, une variable/constante (que je place manuellement) soit consultée pour savoir si il faut utiliser l'une ou l'autre des implémentations.
 
J'aimerai donc que je puisse me dire que je passe de HashMap à Hashtable en modifiant une seule variable dans mon code. (cette variable est consultée à l'éxécution pour voir si il faut créer des HashMap ou des hashtable).
 
J'espère que c'est plus clair :-)


Message édité par ikao2 le 13-04-2006 à 10:15:59
n°1346074
ikao2
okaïdi okaïda
Posté le 13-04-2006 à 14:37:40  profilanswer
 

En fait, pour être plus explicite, je voudrais arriver au résultat suivant, mais en moins lourd :
 

Code :
  1. import java.util.*;
  2. public class Liste {
  3. private List theList;
  4. public Liste() {
  5.  //Vector theList = new Vector();
  6.  ArrayList theList = new ArrayList();
  7. }
  8. public List getTheList() {
  9.  return theList;
  10. }
  11. }

n°1346119
Bidem
Posté le 13-04-2006 à 15:06:48  profilanswer
 

Comme ça alors ?
 

Code :
  1. import java.util.*;
  2. public class Liste {
  3.   // varaible à changer à la main pour choisir entre Vector à ArrayList
  4.   private static final boolean utiliseVector = true;
  5.   private List theList;
  6.   public Liste() {
  7.     theList = utiliseVector ? new Vector() : new ArrayList();
  8.     /* Juste au cas où certain ne comprennent pas la notation inline, la ligne ci-dessus est équivalente à :
  9.     if (utiliseVector) {
  10.       theList = new Vector();
  11.     } else {
  12.       theList = new ArrayList();
  13.     }
  14.     */
  15.   }
  16.   ...
  17. }

n°1346150
ikao2
okaïdi okaïda
Posté le 13-04-2006 à 15:22:58  profilanswer
 

:hello:  
 
merci !
 
C'est toujours "lourd" dans le sens ou il y a toujours une classe créée pour cela, mais c'est un peu moins lourd que moi.
Enfin je crois que ce que je veux faire n'est pas vraiment réalisable, donc je vais prendre cette solution.
 
Merci pour l'explicitation de la notation inline que je n'avais effectivement plus en tête le fonctionnement...

n°1364032
seigneurao
Posté le 11-05-2006 à 10:53:12  profilanswer
 

Salut.
 
La réponse est un peu tardive, mais elle me semblait néanmoins intéressante, si jamais tu la lis à temps.
 
Le mot-clé est "généricité" !
 
Google te donnera pas mal d'indications à ce sujet (tu peux également rechercher "polymorphisme" ).
Une explication sommaire, qui te montrera que c'est bien exactement ce que tu cherches à faire :
http://cowww.epfl.ch/proginfo/wwwe [...] cite_6.pdf
 
Attention, c'est du Java 5.0.


Message édité par seigneurao le 11-05-2006 à 11:39:24
n°1364491
ikao2
okaïdi okaïda
Posté le 11-05-2006 à 17:33:25  profilanswer
 

je n'ai pas encore regardé, mais si tu parles des <Generic>, je comptais les utiliser :)
 
Enfin merci pour le lien, si c'est bien expliqué ca me sera utile !

n°1364540
seigneurao
Posté le 11-05-2006 à 18:29:11  profilanswer
 

Il s'agit effectivement bien de l'utilisation des chevrons <type> pour spécifier des méthodes acceptant plusieurs types de paramètres.
Si j'ai bien compris ta demande initiale, ça devrait satisfaire à tes besoins.

 

Bon codage :)


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

  Faciliter le changement de ma structure de données

 

Sujets relatifs
Faire une recherche dans une base de données sql server[ résolu ] Mise en page texte & base de données
Modifier les données d'un fichier.[ RESOLU ] structure boucle
[SGBD] Base de données "embarquée" avec fonctions de recherche texteVbs et connexion a une base de données mysql
cocher automatiquement 1 checkbox en fonction des données d'1 listboxbase de données/ taille
Changement de contexte : C + assembleur[port serie] reception de donnees a partir d'un fichier ?
Plus de sujets relatifs à : Faciliter le changement de ma structure de données


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