Problemas a escrita em ArrayList

11 respostas
T

Ola Pessoal :)

cada vez que insiro um novo array, o array escrito anteriomente é apagado. só consigo ter uma lista. do que será?

static void registarPaciente1() {
		String ficheiro="HL7.dat";
		int id=6;
		ADT a = leDadosPaciente(id);
		a.PAC.id=id;
		ArrayList<ADT> pacientes = new ArrayList<ADT>();			
		try {
				pacientes.add(a);
				FileOutputStream fos =new FileOutputStream(ficheiro);
				ObjectOutputStream oos = new ObjectOutputStream(fos);
				oos.writeObject(pacientes);
				oos.close();	
			}		
				
		catch (Exception e) {
			e.printStackTrace();  
		}

Parece-me a mim que cada vez que invoco a função, ele cria-me um novo arraylist. o que poderei fazer, então??

Obrigado pela atenção :D

11 Respostas

pimenta

Cara, se você estiver usando a mesma variável de referência é lógico que o Array antigo será “apagado”. Na realidade ele não é apagado ele simplesmente perde a referência.

Explica melhor seu problema…

shoko

você fala que oq tá escrito no arquivo é apagado né?

se for isso você precisa fazer um append.

BASTA COLOCAR O CÓDIGO

FileOutputStream fos =new FileOutputStream(ficheiro,true);
T

obrigado a todos :slight_smile:

ñ me parece que a resolução seja do append pois parece-me que a fazer append ele vai criar um outro arraylist com o mesmo nome noutra linha do documento binário, acho eu…

obrigado pela atenção :smiley:

pimenta

Tiago, como pode perceber duas pessoas ficaram em dúvida em relação a qual seu real problema.

Se você explicar melhor talvez achemos uma resolução.

T

Qual é o construtor para um ArrayList?
Existe construtor para um ArrayList?
Tenho o seguinte problema:“variable pacientes might not have been initialized”, isto tem a ver com o construtor, ñ é?

Abraço…

fiaux

http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html

pimenta

Existe contrutor pra qualquer classe, mesmo que implícito, mas ele existe.

Pro ArrayList são:

ArrayList()

ArrayList(Collection<? extends E> c)

ArrayList(int initialCapacity)

Dá uma olhada aqui: http://java.sun.com/javase/6/docs/api/

Pode te ajudar…

Abraços,

T

Eu vou tentar explicar melhor o meu problema.

tenho a classe accoes e um dos métodos da classe acções é registarpaciente. o objectivo desse método é guardar registos de pacientes. os dados de cada paciente são guardados num arraylist, sendo aqui que surge o principal problema. no codigo como tenho em cima eu crio o arraylist paciente dentro do método registarpaciente, e cada vez que invoco o método registarpacientes ele escreve um novo registo no arraylist e apaga o anterior, pois parece-me que tou a criar um novo Arraylist pacientes cada vez que invoco o método. Por isso parece-me que a solução para o meu problema é fazer o arrayList como um objecto da classe accoes. o Problema é que eu não estou a conseguir criar o construtor para o objecto arraylist paciente.

Espero bem que tenha sido mais expressivo :smiley:

obrigado pela atenção :smiley:

T

o códico para o construtor não deveria ser qualquer coisa como:????

ArrayList<ADT> pacientes;
	
	public accoes(){
		this.pacientes=new ArrayList<ADT>();
	}
pimenta

Cara, to com a séria desconfiança de que você está confundindo conceitos.
Só pra tirar essa minha dúvida, o que você entende por contrutor?

T

Antes de mais, obrigado a todos pelas vossas respostas.

Neste momento já consigo guardar varios registos e consigo ler todos os registos que registei no arrayList. contudo neste momento surguiu um novo problema que não consigo resolver.
Quero criar duas funções, uma de procura por nome de paciente e outra de procura por numero de paciente.

já criei as duas funções: axo k basta só mostrar procurar por nome:

static void mostraPaciente() {	
		ADT a;
		String ficheiro="HL7.dat";
		int	C=numeroPacientes();
		
		geral.limparEcra();
		System.out.print("\nIndique o nome do Paciente: ");
		String nome = geral.lerLinha();


		try {
			FileInputStream fis = new FileInputStream(ficheiro);
			ObjectInputStream ois = new ObjectInputStream(fis);
			ArrayList f = (ArrayList) ois.readObject();
			
			for(int i=0; i<C; i++){
				ADT p1 = (ADT)f.get(i);
				if(a.PAC.nome.equals(nome)){
					apresentardados(p1);
				}
					
							
			}
				
			ois.close();			
			}
		catch (Exception e) { e.printStackTrace();
			}
		
	}

ao compilar o programa surge-me o seguinte erro: variable a might not have been initialized e aponta para a.PAC.nome.

este é um objecto da classe PAC que faz parte da superclasse ADT.

Como poderei resolver o seguinte erro?

Um bem haja a todos

Criado 1 de julho de 2008
Ultima resposta 2 de jul. de 2008
Respostas 11
Participantes 4