Remover registro de classe

6 respostas
gusvato

Boa noite pessoas.
Estou fazendo um trabalho acadêmico, no qual preciso excluir um registro de uma agenda.
Para isso, estou fazendo o seguinte procedimento:
listaPessoas[posicao -1] = null;
Ok, isso limpa o registro da minha agenda, mas eu não consigo reaproveitar o “espaço” de agenda que foi excluído.
Tem alguma forma mais eficiente de limpar o registro para reutilizar essa posição de memória?
Obrigado.
Gustavo

6 Respostas

brmonteiro
List listaDeAlgumaCoisa = new ArrayList();
        //popular a lista
        listaDeAlgumaCoisa.add("teste0");
        listaDeAlgumaCoisa.add("teste1");
        listaDeAlgumaCoisa.add("teste2");
        listaDeAlgumaCoisa.add("teste3");
        listaDeAlgumaCoisa.add("teste4");
        
        System.out.println(listaDeAlgumaCoisa.toString());
        //remove o objeto native posicao 3 da lista
        listaDeAlgumaCoisa.remove(3);
        System.out.println(listaDeAlgumaCoisa.toString());

basicamente é isso

listaDeAlgumaCoisa.remove(indice);
gusvato

Não é uma array, não tem o método remove.
é do tipo:
static Pessoa[] listaPessoas = new Pessoa[100];

listaPessoas[posicao -1] = null;

asousaj

gusvato:
Não é uma array, não tem o método remove.
é do tipo:
static Pessoa[] listaPessoas = new Pessoa[100];

listaPessoas[posicao -1] = null;

static Pessoa[] listaPessoas = new Pessoa[100];

listaPessoas[posicao -1] = null;
listaPessoas[posicao -1] = new Pessoa();//assim uai!
gusvato

Bom dia asousaj .
Mesmo assim fica o registro vazio, pois não vou inserir o registro assim que excluí-lo.
Mas obrigado.

asousaj

Gustavo então seria o seguinte.

Pra liberar vc já fez (colocou a variavel de referencia como null).
Quando for cadastrar um novo contato na agenda vc percorre o array(agenda) e utiliza a primeira posição que tiver com a variavel de referencia como null.

static Pessoa[] listaPessoas = new Pessoa[100]; listaPessoas[posicao -1] = null;

Esqueleto somente pra exemplificar

public void cadastrar(Pessoa[] listaPessoas){
		for(Pessoa pessoa : listaPessoas){
			if(pessoa == null){
				pessoa = new Pessoa();
			}
		}
	}
	//outro modo
	public void cadastrar(Pessoa[] listaPessoas){
		for(int i =0 ; i<listaPessoas.length ; i++){
			if(listaPessoas[i] == null){
				listaPessoas[i] = new Pessoa();
			}
		}
	}

Seria isso q queria saber?

gusvato

Bom dia Adriano.
Assim funcionou, grato.
Achei que teria algum jeito mais fácil de fazer sem precisar varrer o array, mas funcionou, então está valendo.
Gustavo

Criado 23 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 6
Participantes 3