Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [JAVA] Problema esercizio Map

    Salve a tutti amici! Allora vi spiego la mia situazione io ho una map che contiene naturalmente delle key e dei valori (tutti e due String)...ora vorrei sapere dopo aver messo dentro qualche codice e qualche valore con il metodo put come potrei riuscire a scrive il tutto in un file. ovvero il mio file dovra avere queste sembianze:

    "key" = "value";

    In parole povere ciò che ritorna dal metodo EntrySet() devo scriverlo in un file e quindi stampare key e valore nel file.

    Qualche suggerimento? Grazie in anticipo.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    La cosa si risolve facile ed il metodo entrySet() non ti serve nemmeno: usi il metodo keySet() per ottenere l'elenco delle chiavi, quindi lo scorri e, per ciascuna chiave, ottieni il valore dalla mappa e salvi la coppia nel file:

    codice:
    Set<String> chiavi = mappa.keySet();
    for(String key : chiavi) {
       String valore = mappa.get( key );
       ...   // Salva sul file --> key = valore
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da LeleFT
    La cosa si risolve facile ed il metodo entrySet() non ti serve nemmeno: usi il metodo keySet() per ottenere l'elenco delle chiavi, quindi lo scorri e, per ciascuna chiave, ottieni il valore dalla mappa e salvi la coppia nel file:

    codice:
    Set<String> chiavi = mappa.keySet();
    for(String key : chiavi) {
       String valore = mappa.get( key );
       ...   // Salva sul file --> key = valore
    }
    Ciao.
    A questo punto usiamo direttamente la entry

    codice:
    Map<String, String> map = new HashMap<String, String>();
    StringBuilder builder = new StringBuilder();
    ...
    
    for ( Entry<String, String> e : map.entrySet() )
    {
        String line = e.getKey() + " = " + e.getValue() + "\n";
        builder.append(line);
    }
    
    String text = builder.toString();
    
    // scrivi text su un file
    ...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Alex'87
    A questo punto usiamo direttamente la entry

    codice:
    Map<String, String> map = new HashMap<String, String>();
    StringBuilder builder = new StringBuilder();
    ...
    
    for ( Entry<String, String> e : map.entrySet() )
    {
        String line = e.getKey() + " = " + e.getValue();
        builder.append(line);
    }
    
    String text = builder.toString();
    
    // scrivi text su un file
    ...
    Giusta osservazione.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Scusate la mia ignoranza...ma per quale motivo sul file mi recupera solamente un campo io vogli scrivere tutte le key e tutti i valori.





    codice:
    for(String keys : chiavi){ 
                                    
                    String valore = prodotti.get(keys); 
    
                    System.out.println(valore);
    
    try { 
    
                    File f = new File(path); 
    
                    FileWriter fw = new FileWriter(f); 
    
                    fw.write(keys + "=" + valore); 
    
                    fw.flush(); 
    
                    fw.close();
    
     } catch (IOException e) { 
    
    e.printStackTrace(); }
    
     }

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La creazione e l'apertura del file va fuori dal ciclo (chiusura compresa, magari in un blocco finally)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Alex'87
    La creazione e l'apertura del file va fuori dal ciclo (chiusura compresa, magari in un blocco finally)
    Esatto. In quel modo tu, per ciascuna coppia, apri il file (distruggendo eventualmente quello creato prima), ci scrivi dentro la coppia e lo chiudi. Tutto questo per ogni coppia.

    Risultato: alla fine avrai un file contenente solo l'ultima coppia... tutte le altre sono state distrutte ad ogni ciclo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Ok..però scusatemi perchè allora ho qualcosa di non chiaro aiutatemi...come faccio poi a fare vedere quella variabile del metodo fuori dal ciclo? Non la potrò mai vedere essendo una variabile locale o sbaglio? E quindi di fronte a quando utilizzo il metodo write() del mio file come faccio a passargli i valori acquisiti nel ciclo?!

    Grazie della pazienza!

  9. #9
    Ma è davvero cosi difficile per te ?

    codice:
    try { 
       File f = new File(path); 
    
       FileWriter fw = new FileWriter(f); 
       for(String keys : chiavi){ 
                                    
                    String valore = prodotti.get(keys); 
    
                    System.out.println(valore);
    
                    fw.write(keys + "=" + valore); 
       }
                    
    
     } catch (IOException e) { 
    
    e.printStackTrace(); 
    
     }finally
    {
        if(fw != null)
        {
               try{
                  fw.flush(); 
                  fw.close();
               }catch(IOException ex)
               {
                   ex.printStackTrace();
                }
        }
     }

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Mrmorrison
    Ok..però scusatemi perchè allora ho qualcosa di non chiaro aiutatemi...come faccio poi a fare vedere quella variabile del metodo fuori dal ciclo? Non la potrò mai vedere essendo una variabile locale o sbaglio? E quindi di fronte a quando utilizzo il metodo write() del mio file come faccio a passargli i valori acquisiti nel ciclo?!

    Grazie della pazienza!
    Stai facendo confusione... e ti stai perdendo in un bicchiere d'acqua! Ti posto un esempio scritto al volo, prendi spunto

    codice:
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    
    public class test1 {
        public static void main(String args[]) {
    	Map<String, String> map = new HashMap<String, String>();
    	map.put("A", "Value 1");
    	map.put("B", "Value 2");
    	map.put("C", "Value 3");
    
    	FileWriter fileWriter = null;
    	try {
    	    fileWriter = new FileWriter(new File("test.txt"));
    
    	    for (Entry<String, String> entry : map.entrySet()) {
    		fileWriter.write(entry.getKey() + "=" + entry.getValue());
    	    }
    	} catch (IOException ex) {
    	    System.err.println("Error, cannot write data to file");
    	    ex.printStackTrace();
    	} finally {
    	    try {
    		if (fileWriter != null) {
                        fileWriter.flush();
    		    fileWriter.close();
    		}
    	    } catch (IOException ex) {
    		System.err.println("Huston, we have a problem...");
    		ex.printStackTrace();
    	    }
    	}
        }
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.