|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2013
Messaggi: 3
|
[Java] Problema con gli iterator e la serializzazione
Salve a tutti sto studiando java da un po di tempo e per "allenamento/studio" sto scrivendo un piccolo programma che gestisca un archivio personale
il mio problema è che per eliminare un elemento dal archivio ho creato il metodo removeVoceArchvio in questo modo Codice:
public class Archivio implements Serializable {
private static final long serialVersionUID= 1L;
protected ArrayList<VoceArchivio> archivio;
public Archivio(){
archivio= new ArrayList<VoceArchivio>();
}
public void addVoceArchivio(VoceArchivio v){
archivio.add(v);
}
public void removeVoceArchivio(VoceArchivio v){
//Iterator<VoceArchivio> it = archivio.iterator();
//while(it.hasNext()){
for(Iterator<VoceArchivio> it = archivio.listIterator();it.hasNext();){
VoceArchivio a = it.next();
if(a.equals(v))
archivio.remove(a);
//it.remove();
}
}
ma la mia idea era ance di salvare in memoria l'archivio per poter accedere successivamente e poter aggiungere o togliere delle voci quindi ho creato due classi x Serializzare e deserializzare l'archivio e qui sorge il problema se creo un archivio lo serializzo e successivamente lo deserializzo e all'archivio applivo il metodo removeVoceArchvio questo non fa nulla Posto anke le due classi x la serializzazione Codice:
package Archivio;
import java.io.*;
public class SerializzaArchivio {
final String nomeFile="archivio.dat";
public SerializzaArchivio(Archivio archivio){
ObjectOutputStream output;
try{
output = new ObjectOutputStream(new FileOutputStream(nomeFile));
output.writeObject(archivio);
output.close();
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
catch (IOException e) {
System.out.println(e);
}
}
}
package Archivio;
import java.io.*;
public class DeserializzaArchivio {
private Archivio archivio;
final String nomeFile="archivio.dat";
public DeserializzaArchivio(){
try{
ObjectInputStream input = new ObjectInputStream(new FileInputStream(nomeFile));
archivio =(Archivio) input.readObject();
input.close();
}
catch (FileNotFoundException e)
{
System.out.println("");
}
catch (IOException e) {
System.out.println(e);
}
catch (ClassNotFoundException e){
System.out.println(e);
}
}
public Archivio getArchivio(){
return archivio;
}
}
Spero di essere stato abbastanza chiaro ma sono un paio di giorni che cerco di risolvere questo problema |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
|
Ricorda che anche la classe VoceArchivio deve essere serializzabile....
inoltre il tuo metodo per la rimozione Codice:
public void removeVoceArchivio(VoceArchivio v){
//Iterator<VoceArchivio> it = archivio.iterator();
//while(it.hasNext()){
for(Iterator<VoceArchivio> it = archivio.listIterator();it.hasNext();){
VoceArchivio a = it.next();
if(a.equals(v))
archivio.remove(a);
//it.remove();
}
Codice:
public void removeVoceArchivio(VoceArchivio v){
//fa esattamente la stessa cosa che fai tu sopra (piu o meno)
archivio.remove(v);
}
mentre ricorda che per scorrere un archivio (non eliminare elementi però): Codice:
for (VoceArchivio va : archivio) {
faiQualcosaConVA(va);
}
__________________
"Considerate la vostra semenza fatti non foste a viver come bruti ma per seguir virtute e canoscenza" Ultima modifica di mone.java : 17-12-2013 alle 11:06. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Dec 2013
Messaggi: 3
|
ciao grazie per l'aiuto ma per fortuna ho risolto da solo(cosa non fa una notte di sonno
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:12.



















