Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    JAVA - Vector<HashMap<String, String>> anomalia in inserimento valori

    Ciao,
    mi capita che anche se aggiungo Dei nuovi elementi al vector mi si riempie tutte le posizioni con l'ultimo valore inserito....
    Qualcuno mi sa dire dove sbaglio?
    lascio giu' lo spezzone del codice e l'output...
    Grazie
    codice:
    Vector<HashMap<String, String>> righe = new Vector<HashMap<String, String>>();
    HashMap<String, String> riga= new HashMap<String, String>();
    
     riga.put("cane","belcane");
     righe.add(rowResult);
    			
     riga.put("cane","Bruttocane");
     righe.add(rowResult);
     out.println(righe);
    OUTPUT:
    [{cane=Bruttocane}, {cane=Bruttocane}]

  2. #2
    Perché tu praticamente inserisci nel vettore due oggetti di tipo RowResult che evidentemente sono lo stesso oggetto (in pratica rowResult è un oggetto che viene solamente modificato). Il vettore memorizza il puntatore all'oggetto che è uno, ed è sempre lo stesso. Io non so come funziona RowResult, ma per ovviare al problema devi creare un nuovo oggetto di tipo RowResult ogni volta che aggiungi un nuovo elemento al vettore.

    una cosa del genere:
    righe.add(new RowResult(<quicivannoiparametridelcostruttorecheno nconosco>));

  3. #3
    Ah....e siccome ripeto non conosco RowResult, ho solamente supposto che ci sia un qualche collegamento tra la Hashmap riga e rowResult. Un po' di chiarezza non guastava

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da Shikigami
    Ciao,
    mi capita che anche se aggiungo Dei nuovi elementi al vector mi si riempie tutte le posizioni con l'ultimo valore inserito....
    Le domande su Java hanno una sezione dedicata: ho spostato la discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Originariamente inviato da ardito86
    Ah....e siccome ripeto non conosco RowResult, ho solamente supposto che ci sia un qualche collegamento tra la Hashmap riga e rowResult. Un po' di chiarezza non guastava
    CIao ragazzi grazie per le risposte...
    e si e' vero e' collegato al RowResult..
    infatti come suggerito ho messo new ad ogni ciclo
    posto il metodo funzionante con
    rowResult= new HashMap<String, String>();
    l'obiettivo e' quello di avere una mappa per ogni riga:
    codice:
    public Vector<HashMap<String, String>> queryRighe(String query)	throws SQLException {
    
    		Vector<HashMap<String, String>> rowsResult = new Vector<HashMap<String, String>>();
    
    		try {
    
    			this.stabilisciConnessione();
    
    			resultSet = statement.executeQuery(query);
    		
    			resultMetaData = resultSet.getMetaData();
    			int numberOfColumns = resultMetaData.getColumnCount();
    			
    			
    			HashMap<String, String> rowResult;
    			 while(resultSet.next()){
    				 rowResult= new HashMap<String, String>();
    				 for (Integer j = 1; j <= numberOfColumns; j++) {
    					 rowResult.put(resultMetaData.getColumnName(j), resultSet.getString(j));
    				 }
    				
    			    rowsResult.add(rowResult);
    			 }
    			} catch (Exception e) {
    			e.printStackTrace();
    			out.println(e);
    		}
    		
    		this.chiudiConnesione();
    		return rowsResult;
    
    	}

  6. #6
    Originariamente inviato da ardito86
    Perché tu praticamente inserisci nel vettore due oggetti di tipo RowResult che evidentemente sono lo stesso oggetto (in pratica rowResult è un oggetto che viene solamente modificato). Il vettore memorizza il puntatore all'oggetto che è uno, ed è sempre lo stesso. Io non so come funziona RowResult, ma per ovviare al problema devi creare un nuovo oggetto di tipo RowResult ogni volta che aggiungi un nuovo elemento al vettore.

    una cosa del genere:
    righe.add(new RowResult(<quicivannoiparametridelcostruttorecheno nconosco>));
    Grazie...spiegazione Perfetta!!!

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.