Ajuda sobre Vector em java

E ai gurizada, bah to com um problema aqui pessoal… tenho uma classe que armazeno dados em um vector… até ai tudo tranquilo, só que eu preciso fazer algo com este vector para que ao sair desta classe e após voltar a ela, precisaria recuperar os dados do vector…

Desde já, valeu gurizada…

package br.com.embrapa.territorio;

import java.io.BufferedReader;
import java.io.FileReader;
import java.text.DecimalFormat;
import java.util.StringTokenizer;
import java.util.Vector;

public class AbreArquivo {

    //recebo por parâmetro o caminho do arquivo a ser aberto, o nome digitado para o arquivo
    //o diretorio selecionado e o seu tipoDados correspondente ou completo ou incompleto, e a variavel passadaArquivo que me dirá se foi escolhido inserir mais dados a este arquivo
    public boolean arquivo(String caminho, String nome, String diretorio, Integer passadaArquivo) {
        String linha = null;
        Integer iniDados; //armazena o numero da linha que inicia os dados necessários a serem pegos, ou seja, a 1ª cidade
        Integer linhaData;//armazeno o numero da linha em que pegarei a data
        Integer linhaProcuraColunas;//armazeno o numero da linha em que está o cabeçalho dos campos que terei.Ex: background, preferencial, toleradaI e II, marginal e nao recomendada
        Integer i = 0;
        Integer indiceData = 0;
        Integer indiceCidade = 1;

        //concateno o diretorio selecionado, o nome, mais a extensao do arquivo
        System.out.println("Recebeu este diretorio: " + diretorio + " e este nome: " + nome);
        String novoNome = diretorio + nome + ".txt";
        System.out.println("Vai gravar neste novo nome: " + novoNome);
        System.out.println("Arquivo que foi carregado: " + caminho);
        

        //crio um vetor de vetor para armazenar os dados
        Vector<Vector> vetor = new Vector<Vector>();
        //se for a primeira vez que to executando, crio um vetor de vetor
        if (passadaArquivo.equals(1)) {
            vetor.add(new Vector());
        }

        try {
            FileReader reader = new FileReader(caminho); // Localização do Arquivo  
            BufferedReader leitor = new BufferedReader(reader);
            StringTokenizer st = null;

            String cidade; //Armazena a cidade
            Double background;
            Double preferencial = 0.0;
            Double tolerada1 = 0.0;
            Double tolerada2 = 0.0;
            Double marginal = 0.0;
            Double naoRecomendado = 0.0;
            Integer recomenda = null;//se recomenda for 1 eh recomendável, se for 2 eh nao recomendável
            String data;

            //crio estas variáveis setando todas false, para que ao encontrar a linha do arquivo em que estao os campos, procurarei um por um destes,
            //os que encontrar seto true
            boolean pBackground = false, pPreferencial = false, pTolerada1 = false, pTolerada2 = false, pMarginal = false, pNaoRecomendado = false;

            //crio um decimal format para definir apenas uma casa decimal depois da virgula
            //para a variavel etr, apos a divisao por 100
            DecimalFormat meuFormato = new DecimalFormat("0.00");

            GravaArquivo gravar = new GravaArquivo();

            Integer j = null;
            boolean encontrou = false;
            while ((linha = leitor.readLine()) != null) {
                //procuro pela linha abaixo, enquanto nao encontrar não entro no proximo if, ou seja, só continuo a execução quando encontrar a linha
                if (linha.equals("Tabela cruzada de areas (em KmxKm):")) {
                    System.out.println("Encontrou");
                    j = 1;
                    encontrou = true;
                }

                if (encontrou == true) {
                    //entro neste if para pegar a data do arquivo
                    if (i.equals(j + 2)) {
                        System.out.println("Conteudo da linha data:" + linha);
                        //armazeno a data do arquivo
                        data = linha.substring(26, 31);
                        System.out.println("Data pega do arquivo: " + data);
                        vetor.get(indiceData).addElement(data);
//                    gravar.Gravar("  " + data, novoNome, 1, passadaArquivo);
                    }
                    //entro neste if para procurar os campos que terei no arquivo
                    if (i.equals(j + 4)) {
                        System.out.println("Conteudo da linha procura colunas" + linha);
                        // UTILIZA DELIMITADOR " " PARA DIVIDIR OS CAMPOS  
                        st = new StringTokenizer(linha, " ");
                        String dados = null;

                        //separo os dados por " ", e procuro na linha os campos presentes
                        //para cada campo encontrado seto a sua respectiva variavel com true
                        while (st.hasMoreTokens()) {
                            dados = st.nextToken();
                            String recebe = dados;

                            if (recebe.equals("Background")) {
                                System.out.println("Encontrei Background");
                                pBackground = true;
                            }

                            if (recebe.equals("Preferencial")) {
                                System.out.println("Encontrei Preferencial");
                                pPreferencial = true;
                            }
                            if (recebe.equals("I")) {
                                System.out.println("Encontrei ToleradaI");
                                pTolerada1 = true;
                            }
                            if (recebe.equals("II")) {
                                System.out.println("Encontrei ToleradaII");
                                pTolerada2 = true;
                            }
                            if (recebe.equals("Marginal")) {
                                System.out.println("Encontrei Marginal");
                                pMarginal = true;
                            }
                            if (recebe.equals("Não")) {
                                System.out.println("Encontrei Não Recomendado");
                                pNaoRecomendado = true;
                            }
                        }
                    }
                    //entro neste if, se cheguei na parte das cidades e os seus dados
                    if (i > j + 6) {
                        System.out.println("Conteudo da linha:" + linha);

                        //testo se encontrou uma linha vazia, caso tenha encontrado, "testaLinha" recebe true
                        //saio do if, nao executo os tokens, pois encontrou o fim 
                        boolean testaLinha = linha.isEmpty();
                        if (testaLinha == true) {
                            System.out.println("encontrou linha vazia");
                            break;
                        }

                        // UTILIZA DELIMITADOR " " PARA DIVIDIR OS CAMPOS  
                        st = new StringTokenizer(linha, " ");
                        String dados = null;

                        //o primeiro dado da linha será a cidade, o próximo é uma "|" que separa a cidade, e para os próximos sempre farei um teste para ver se a sua respectiva
                        //variavel está true, ou seja, se foi encontrado antes no seu cabeçalho o nome deste campo, se foi trato o dado, senao passo para o seguinte
                        while (st.hasMoreTokens()) {
                            vetor.add(new Vector());

                            dados = st.nextToken();
                            cidade = dados;
                            System.out.println("Cidade: " + cidade);
                            vetor.get(indiceCidade).addElement(cidade);

                            //esse token e uma | que separa a cidade do resto dos dados no arquivo, por isso nao trato esse dado, e assim vou para o seguinte
                            dados = st.nextToken();

                            if (pBackground == true) {
                                dados = st.nextToken();
                                background = Double.valueOf(dados);
                                System.out.println("Background: " + background);
                            }

                            if (pPreferencial == true) {
                                dados = st.nextToken();
                                preferencial = Double.valueOf(dados);
                                System.out.println("Preferencial: " + preferencial);
                            }

                            if (pTolerada1 == true) {
                                dados = st.nextToken();
                                tolerada1 = Double.valueOf(dados);
                                System.out.println("Tolerada1: " + tolerada1);
                            }

                            if (pTolerada2 == true) {
                                dados = st.nextToken();
                                tolerada2 = Double.valueOf(dados);
                                System.out.println("Tolerada2: " + tolerada2);
                            }

                            if (pMarginal == true) {
                                dados = st.nextToken();
                                marginal = Double.valueOf(dados);
                                System.out.println("Marginal: " + marginal);
                            }

                            if (pNaoRecomendado == true) {
                                dados = st.nextToken();
                                naoRecomendado = Double.valueOf(dados);
                                System.out.println("Nao Recomendado: " + naoRecomendado);
                            }

                            //farei as somas, para testar se soma3 e mais de 50% do somaTotal
                            Double somaTotal = preferencial + tolerada1 + tolerada2 + marginal + naoRecomendado;
                            System.out.println("Total da cidade deu: " + somaTotal);

                            Double soma3 = preferencial + tolerada1 + tolerada2;
                            System.out.println("Soma preferencial e toleradas: " + soma3);

                            if (pPreferencial == true || pTolerada1 == true || pTolerada2 == true && (pMarginal == true || pNaoRecomendado == true)) {
                                if (soma3 > (somaTotal / 2)) {
                                    recomenda = 1;
                                    System.out.println("As 3 SÃO mais de 50% do total");
                                    System.out.println("Testou soma3:" + soma3 + " com somaTotal/2: " + (somaTotal / 2));
                                } else {
                                    recomenda = 2;
                                    System.out.println("As 3 NÃO SÃO mais de 50% do total");
                                }
                                vetor.get(indiceCidade).addElement(recomenda);
                            }

                            if (pPreferencial == true && pTolerada1 == true && pTolerada2 == true && pMarginal == false && pNaoRecomendado == false) {
                                recomenda = 1;
                                vetor.get(indiceCidade).addElement(recomenda);
//                            gravar.Gravar(cidade + "  " + recomenda, novoNome, 2, passadaArquivo);
                            }

                            if (pPreferencial == false && pTolerada1 == false && pTolerada2 == false && pMarginal == true && pNaoRecomendado == true) {
                                recomenda = 2;
                                vetor.get(indiceCidade).addElement(recomenda);
//                            gravar.Gravar(cidade + "  " + recomenda, novoNome, 2, passadaArquivo);
                            }

                            indiceCidade++;

                        }
                    } else {
                        i++;
                        System.out.println("Entrou no incremento d i");
                    }
                }
            }//fim do while

            System.out.println("TAMANHO DE LINHAS DO VETOR:" + vetor.size());

            for (Vector v : vetor) {
                for (Object s : v) {
                    System.out.println("Isso eh o que tenho atualmente vetor: " + s);
                }
            }
            gravar.Gravar2(novoNome, vetor);

            leitor.close();
            reader.close();
            
            ArmazenaMatriz armazenaVetor = new ArmazenaMatriz();
            armazenaVetor.DadosMatriz(vetor);
            
            return true;

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}  

O que você quer é fazer persistência dos dados? Nem li seu código (preguiça xD), mas se é a persistência dos dados que você quer, basta criar uma nova classe como DadosRecord e nessa classe armazenar os valores que deseja persistir.

Dê uma olhada em Design Patterns sobre manipulação de objetos.

http://www.guj.com.br/java.tutorial.artigo.137.1.guj

http://www.google.com.br/search?hl=pt-BR&client=firefox-a&channel=s&rls=org.mozilla%3Apt-BR%3Aofficial&hs=t3S&q=design%2Bpatterns%2Bmanipulação%2Bobjetos%2Bjava&btnG=Pesquisar&meta=

Se não for isso que você quer, posta aí.
Abraços.

Valeu eros.stein…
Bah cara, na verdade resolvi meu problema criando um campo na classe que chama esta outra que postei, fazendo referencia entre elas para poder acessar entao este campo que seria do tipo vector… Não é das melhores soluções mas fazer oq ne… hehe… to começando em java preciso aprender mais sobre OO… mas valeu pelos links vou dar uma estudada…

Abraços,