Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    74

    [Java] Come Salvare una hashMap

    Sto provando a creare un programma in cui sono presenti degli Oggetti chiamati grafite,e MnC
    che possiedono un valore intero chiamato resa che può essere inserito dall'utente e che deve restare salvato in un file "resa.ser".Il salvataggio dei valori è "azionata" dalla pressione di un pulsante.
    IL file viene creato,ma quando riaprendo il programma quando tento di deserializzare i valori rieso a ottenere solo il secondo dei 2.

    Questo Codice è una prova "Fatta alla Buona" per non pasticciare in un progetto più grande
    (la finestra è proprio minimale).
    é la prima volta che provo a utilizzare le strutture dati di java è penso che il problema sia in una sorta di sovrascrittura della Mappa.

    Grazie a tutti.

    1)la Finestra di prova

    import java.awt.BorderLayout;
    import java.awt.event.*;
    import javax.swing.*;


    public class MainFrame extends JFrame{
    private JPanel p;
    protected JTextField jtfGrafite,jtfMnC;
    protected JButton b;
    protected Grafite grafite;
    protected MnC mnC;

    public MainFrame(){
    setBounds(50,50,200,200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    p=new JPanel();
    p.setLayout(new BorderLayout());
    b=new JButton("Scrivi");
    jtfGrafite=new JTextField(20);
    jtfMnC=new JTextField(20);
    grafite=new Grafite();
    mnC=new MnC();
    b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent ae){
    grafite.setResa(jtfGrafite,"Grafite");
    mnC.setResa(jtfMnC,"MnC");
    }});
    p.add(jtfGrafite,BorderLayout.NORTH);
    p.add(jtfMnC,BorderLayout.CENTER);
    p.add(b,BorderLayout.SOUTH);

    add(p);
    }
    }

    2)Il file contenenti i metodi set e get

    package provaresa2;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import java.util.*;

    public class FeLega {
    Map<Object,String> mappaLeghe=new HashMap();
    int resaPrincipale;
    int resaSecondaria;
    int costo;
    //Costruttore vuoto
    public FeLega(){

    }
    //Costruttore con parametri
    public FeLega(int resaPrincipale,int resaSecondaria,int costo){
    this.resaPrincipale=resaPrincipale;
    this.resaSecondaria=resaSecondaria;
    this.costo=costo;
    }
    //metodo getGenerico dove inserire il gtf di riferimento e la chiave della HashMap
    public void getResa(JTextField jtf,String feLega){

    try{
    FileInputStream fis=new FileInputStream(new File("Resa.ser"));
    ObjectInputStream s=new ObjectInputStream(fis);
    Map<String,String> mappa=new HashMap();
    mappa=(HashMap)s.readObject();
    String valore=mappa.get(feLega);
    jtf.setText(valore);
    System.out.println(feLega+"è composta da "+mappaLeghe);
    fis.close();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    }

    public void setResa(JTextField jtf,String feLega){
    String valore=jtf.getText();
    mappaLeghe.put(feLega,valore);
    try{
    FileOutputStream fos=new FileOutputStream(new File("resa.ser"));
    ObjectOutputStream s=new ObjectOutputStream(fos);
    s.writeObject(mappaLeghe);
    System.out.println(feLega+"è composta da "+mappaLeghe);
    fos.close();
    }
    catch(IOException e){
    e.printStackTrace();
    }
    }
    }
    class Grafite extends FeLega{
    }
    class MnC extends FeLega{

    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Una lettura di base:

    Serializzazione in Java
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    74
    Grazie mille,ho risolto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.