Como eu salvo o estado de uma arraylist

8 respostas
W

Galera, alguém pode me ajudar? como eu consigo salvar o estado de uma arraylist para que ela carregue os objetos que foram guardados se eu reiniciar o eclipse? segue exemplo.

public class TestaGuardador {

public static void main(String[] args) throws IOException {
	CapturarTeclado captura=new CapturarTeclado();
	ArrayList<String> lista=new ArrayList<>();
	
	System.out.println("insira o teste: ");
	String texto=captura.entradaTeclado();
	lista.add(texto);
}

}

Eu quero guardar as entradas na arraylist e depois visualiza-las, mais se eu rodar de novo o programa ele vai pedir um novo texto, se eu comentar as linhas de captura e de adicionar na array e colocar um get() ele não vai trazer o valor, como eu faria nesse caso para consultar a lista sem ter que fazer uma nova captura?? essa classe eu fiz só para exemplificar, se ficou confuso eu tento explicar melhor, rsrsr

8 Respostas

F

Não tem como fazer isso do jeito que você pensa, você pode declarar um array inicializando-o com um valor fixo, deixando hard-code, mas do jeito que pensa não existe.

Quando você reiniciar o eclipse a execução da thread ao qual sua aplicação roda vai ser terminada por consequência os valores que foram guardados em memória a partir da alocação feita quando você instanciou o array e vinculados a essa thread serão perdidos, por tanto a cada vez que você roda sua aplicação é vinculada uma thread de execução para ela, ao fim da mesma os objetos são retirados de memoria através da execução do Garbage Collector pela JVM.

C

Complementando: o único jeito de recuperar informações de execuções anteriores é salvando-as, seja em arquivos na máquina do usuário, em alguma tabela do banco de dados, ou na internet.

Variáveis do Java em si são perdidas sempre que você finaliza sua execução.

W

Entendi pessoal, então tem como eu por os dados de um arquivo de novo dentro de uma arraylist quando iniciar? Esse arquivo será txt??

F

Você pode salvar tanto em um arquivo como em um banco de dados, mas para esse caso simples, melhor opção acredito que seja arquivo, pesquise sobre manipulação de arquivos em java, que você vai achar o que precisa(como escrever e como ler de um arquivo).

W

Flavio, eu aprendi como gravar e ler arquivos pelo Input e OutputStream mais não sei como ler do arquivo e jogar em um arraylist, pode me dar uma dica?

W

acho que esse código exemplifica o que você procura.

ArrayList<String> array_list = new ArrayList<String>();

String component_doc = "/home/joao/document.txt";

Scanner inFile = null;
try 
{
    inFile = new Scanner(new File(component_doc));
} 
catch (FileNotFoundException e) 
{
    e.printStackTrace();
}

while(inFile.hasNextLine())
{
    array_list.add(inFile.nextLine());
}

outra forma.

import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;


static ArrayList<String> array_list = new ArrayList<String>();
String fileName = "/home/joao/document.txt";
try
{
    List<String> lines = Files.readAllLines(Paths.get(fileName), Charset.defaultCharset());
    for (int i = 0; i < lines.size(); i++)
    {
        array_list.add(lines.get(i).toString());
    }
}catch(IOException io)
{
    io.printStackTrace();
}
W

Obrigado galera, com a dica de vocês estou progredindo, descobri que posso até salvar objetos em um arquivo!!! muito obrigado.

F

pesquise por properties é um tipo de arquivo mais comumente usado para “hard-code” em projetos, lá deixamos alguns parâmetros da aplicação, existem outros meios também.

Poderia exclarecer qual o intuito de você querer realizar tal procedimento? acredito que seja apenas conceitual…

Criado 18 de agosto de 2016
Ultima resposta 19 de ago. de 2016
Respostas 8
Participantes 5