kekkuz87
17-12-2013, 00:08
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
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();
}
}
e il metodo funziona se creo ad esempio una classe main dove creo un archivio e applico il metodo removeVoceArchvio
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
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;
}
}
Credo che il problema sia un conflitto tra iterator e la serializzazione
Spero di essere stato abbastanza chiaro ma sono un paio di giorni che cerco di risolvere questo problema
il mio problema č che per eliminare un elemento dal archivio ho creato il metodo removeVoceArchvio in questo modo
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();
}
}
e il metodo funziona se creo ad esempio una classe main dove creo un archivio e applico il metodo removeVoceArchvio
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
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;
}
}
Credo che il problema sia un conflitto tra iterator e la serializzazione
Spero di essere stato abbastanza chiaro ma sono un paio di giorni che cerco di risolvere questo problema