Forum Clubic

Stocker des données dans une Hashtable java

bonjour à tous!!

donc en faite j’ai un petit prijet d’étude que j’éffectue avec une Hashtable pour entrer et stocké des donneés, mais le hic c’est dés que je ferme mon programme, les données s’évapore et la Hashtable est vierge!donc je voulais savoir s’il y’avait une astuce permettant à la Hashtable de garder les données déjà entrer!et voilà ci dessous un petit passage du code:

Scanner scan1=new Scanner(System.in);
String nom=scan1.nextLine();

Scanner scan2=new Scanner(System.in);
String prenom=scan2.nextLine();


Hashtable m=new Hashtable();

mokh.put(nom,prenom);


Enumeration tar=m.keys();

while (tar.hasMoreElements( ))
{

                               Object key = tar.nextElement( );
                               Object value = m.get(key);
                               System.out.println("le nom: "+key+"\nle prenom: "+value);      

merci d’avance

donc aprés avoir éffectué une petite recherche il s’avére qu’il faur que j’enregistre les donées de la Hashtable sur disque, sur un fichier par exemple!!mais comment faire?votre aide me sera d’un trés grand apport!merci

Scanner scan=new Scanner(System.in);

System.out.println(“donnez le nom du client”);
String nom=scan.nextLine();

System.out.println(“donnez le prenom du client”);
String prenom=scan.nextLine();

Hashtable m=new Hashtable();

m.put(nom,prenom);

Enumeration tar=m.keys();

while (tar.hasMoreElements( ))
{

Object key = tar.nextElement( );
Object value = m.get(key);
System.out.println("le nom: “+key+”\nle prenom: "+value);

}

en faite j’ai réussi à stocker les données que je saisis dans un fichier!mais le probléme reste le meme certe les données restent dans le fichier mais pas dans la hash table!

class T

{

Hashtable m;

public void chargerhash(String n,String p)
{

m=new Hashtable();
m.put(n,p);

}
public void affichhash()
{

Enumeration tar=m.keys();

System.out.println(“le contenu de ton Htable:”);
while (tar.hasMoreElements( ))
{

Object key = tar.nextElement( );
Object value = m.get(key);
System.out.println("le nom: “+key+”\nle prenom: "+value);

}
}

public static void main(String a[]) throws IOException
{

T myt=new T();

Scanner scan=new Scanner(System.in);

System.out.println(“donnez le nom du client”);
String nom=scan.nextLine();

System.out.println(“donnez le prenom du client”);
String prenom=scan.nextLine();

mytp.chargerhash(nom,prenom);
mytp.affichhash();

Fich monfich=new Fich();
monfich.saveinfich(nom);
monfich.saveinfich(prenom);

Affichfich ref=new Affichfich();
ref.lirefichier();

}
}

bien sur le code ci dessus n’est qu’une simulation!
Modifier (corriger) le message

c’est à toi d’inventer la solution de stockage qui te conviendra.
A la fermeture de ton programme, tu dois rajouter un appel à une méthode qui se chargera de sauvegarder les données de ta hashtable dans un fichier.

merci à toi!mais en faite c’est ce que j’ai, à la fermeture du programme j’enregistre le tout dans le fichier mais bien à la reouverture les données sont stockées que dans le ichier et non dans la hashtable!!donc je pense qu’il faut que je trouve une methode qui permet de lire à partir d’un fichier et de stocké dans la hashtable!ça se fait?

Au passage: Hashtable, Enumeration = BEURK.

Map<K, V>, Iterator<Map.Entry<K, V>> = Mieux.

Si c’est pour un TP, alors ton prof te fait un cours périmé… ou juste pour voir comment Java 1.4 sucks.

Pour ton problème, peux tu pointer les lignes où ton fichier est 1) censé être lu 2) censé remplir ta hashtable?

oui effectivement c’est pour un TP et je suis obligé à utiliser une hashtable,et tout le probléme c’est comment enregistrer les données dans cette hashtable!!
j’ai pensé à les enregistrer dans un fichier et puis au lancement du programme charger les donées du fichier dans la hashtable,comme ça mon hashtable ne sera pas vide!!mais je sais pas si ça peut se faire?
à ce que j’ai compris San-Nom tu me propose d’utiliser deux fichier,un pour lire et autre écrire?c’est ça?

pas du tout.

j’ai juste dis : montre nous où tu fais la lecture, ou tu fais l’écriture dans le code ci dessous.

Et n’hésite pas à utiliser la balise [ code ] et [ /code ] (sans les espaces) tel que :

foo();