Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Problema lista

Visualizzazione discussione

  1. #2
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Ciao,
    il secondo stampa solo due stringhe vuote e 0
    dopo la prima stampa imposti i valori a zero e stringa vuota:
    codice:
        simuBuffer[position].setType("");
        simuBuffer[position].setValue("");
        simuBuffer[position].setTimestamp(0);
    Questo perchè nella lista non aggiungi un nuovo oggetto ma semplicemente gli passi il reference dell'oggetto nel buffer; quindi modificando il buffer modifichi anche la lista.
    Se ti serve poter modificare il buffer senza ripercussioni sulla lista allora puoi procedere in 2 modi:
    1) sovrascrivi il metodo clone() che restituisce un clone dell'oggetto (ogni oggetto lo eredita da object), e alla lista gli passi
    codice:
    listaMisu.add(position, simuBuffer[position].clone());
    2) crei semplicemente un nuovo oggetto con gli stessi valori e lo aggiungi alla lista:
    codice:
    listaMisu.add(position, new Misurazione(simuBuffer[position].getType(), simuBuffer[position].getValue(), simuBuffer[position].getTimestamp()));
    Tieni presente che il clone non è la scelta più raccomandata quindi ti consiglio di usare il secondo modo.

    Inoltre se vuoi svuotare il buffer devi assegnare null all'elemento dell'array che vuoi eliminare
    codice:
    simuBuffer[position] = null
    EDIT. Per semplificare il secondo metodo potresti aggiungere un nuovo costruttore che prende un oggetto della sua stessa classe e restituisce una nuova istanza:
    codice:
    public class Misurazione{
       ...    
       //costruttore standard 
       public Misurazione(int type, int value, int timestamp){
           // assegnazioni   
       }
       //costruttore per la copia
       public Misurazione(Misurazione m){
            this(m.getType(), m.getValue(), m.getTimestamp());
       }
    }
    e nella lista li inserisci cosi:
    codice:
    listaMisu.add(position, new Misurazione(simuBuffer[position]));
    Ultima modifica di Nikopol; 09-09-2015 a 23:25
    La Guida Galattica è infallibile.
    È la realtà, spesso, ad essere inesatta.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.