Java: écrire / lire une carte à partir du disque
Je suis nouveau sur le Java donc je ne suis pas sûr de la meilleure façon de le faire. J'ai une structure de données que j'aimerais être capable d'écrire dans un fichier avant de fermer le programme, puis de lire le fichier à re-remplir la structure du prochain démarrage de l'application.
Ma structure est HashMap<String, Object>
. L'Objet est assez simple; Pour les variables de membre, il a une Chaîne de caractères, et deux petits natif des tableaux de type Boolean. C'est une véritable application simple, et je ne m'attends pas à plus de 10-15 <key,value>
paires à la fois.
J'ai essayé (sans succès) avec un Objet flux d'entrées-sorties. Ai-je besoin de faire l'Objet de classe Sérialisable?
Pouvez-vous me donner des suggestions sur la meilleure façon de le faire? J'ai juste besoin d'un coup de pouce dans la bonne direction. Merci!
EDIT: bon je me sens stupide encore, j'ai écrit à partir d'une carte et de la lecture dans une autre carte, puis de les comparer à vérifier mes résultats. Apparemment, j'ai été en les comparant mal. Soupir.
source d'informationauteur jazz99
Vous devez vous connecter pour publier un commentaire.
Si vous n'êtes pas concerné au sujet de l'Objet en particulier , vous avez juste besoin de la valeur de clé paire de chaîne,Chaîne alors je vous suggère d'aller pour
java.util.Propriétés
. sinon, ici, vous allezOui, vos objets doivent mettre en œuvre
Serializable
pour être sérialisé en Java par défaut mécanisme.HashMap
etString
déjà implémenter cette interface, et donc peut être sérialisé avec succès.Prendre un coup d'oeil au Soleil propre La sérialisation tutoriel - c'est assez court et je pense que doit couvrir tout ce dont vous avez besoin pour votre cas simple. (Vous devez juste être capable de serialise la
Map
objet dans le flux, et puis le lire sur les exécutions ultérieures).Si vous avez des problèmes, essayez de sérialisation d'une simple
HashMap<String, String>
avec des valeurs factices. Si cela réussit, vous saurez que le problème se situe (en quelque sorte) avec votre propre classe' serializability; sinon, si cela ne fonctionne pas, vous pouvez vous concentrer sur la structure de base avant de lancer votre propre classe dans le mélange.Post précédent si vous avez des problèmes plus spécifiques que vous ne pouvez pas trouver votre propre.
Oui, si vous voulez écrire un objet pour le système de fichiers, que l'objet doit implémenter
Serializeable
. Ici est un tutoriel qui devrait vous aider.N'est pas la peine de le faire Serializable jusqu'à ce que vous comprendre plus au sujet de ce qui est utilisé pour. Vous voulez regarder FileWriter et google "fichier java io" Un bon moyen pour écrire ces données au format CSV.
par exemple.
key1,key2,clé3
valuea1,valuea2,valuea3
valueb1,valueb2,valueb3
Espère que cette aide.
Je déconseillerais à l'aide de
Serializable
; il est beaucoup plus difficile à faire correctement qu'il n'y paraît. Il semblerait que le simple ajout deimplements Serializable
est tout ce que vous devez faire. Mais en fait, ce qui ajoute beaucoup de restrictions sur votre code qui sont difficiles à traiter dans les pratiques de développement logiciel (plutôt que dans l'école). Pour voir juste comment horrible de ces restrictions, voir le livre Efficace Java (deuxième édition) par Bloch.SÉRIALISER UNE TABLE DE HACHAGE:
Ce code fonctionne très bien , j'ai mis en œuvre et utilisé dans mon application. Plz faire ur fonctions en conséquence pour l'enregistrement de la carte et de la récupération de la carte.
Imp chose est, vous avez besoin de faire confirmer que les objets que vous mettez comme valeur dans la carte doit être sérialisable , signifie qu'ils doivent mettre en œuvre serailizbele interface. ex.
Map<.String,String> hashmap=new HashMap<.String,String>().. ici, dans cette ligne ...carte de la chaîne et les deux sont implictly serializable , de sorte que nous n'avons pas besoin de mettre en œuvre serializble pour ces explicitement, mais si vous mettez votre propre objet qui doit être sérialisable.