[RESOLVIDO]Problema com Vetor de Strings

8 respostas
R
Boa noite pessoal. Estou tentando criar um vetor de strings(cada posição do vetor é uma string) mas não sei se é normal esse tipo de declaração em Java, pois na documentação da oracle não há esse tipo de declaração, achei muito parecido com C++.
public class Arquivo {
    
    public Vector<String> linha;

    public Arquivo() {
        this.linha = new Vector<String>();
    }
}
Como faço para acessar por exemplo o segundo caracter da primeira posição do vetor(primeira string)? Tentei o código abaixo mas não compila, considere que já coloquei strings no vetor.!
System.out.println(linha[1].get(0));

Obrigado

8 Respostas

AntonioDiego
String primeira = linha.elementaAt(0); //Acho que é isso ( ou  get(0) )
char c = primeira.charAt(1);
System.out.println(c);
D

Amigo, se eu tiver entendido bem acho que isso aqui resolve.

public class UsandoStrings {

        private String[] linha;

        public UsandoStrings(int tamanho) {
                this.linha = new String[tamanho];
        }

        public char retornarCaractere(int posicaoString, int posicaoCaractere) {
               return linha[posicaoString].charAt(posicaoCaractere);
        }

}

Desculpe qualquer possível erro, mas estou enviando do tablet e não pude testar.
Valeu.

R

Ok mas vocês poderiam me esclarecer qual a diferença entre esses dois códigos?
Acredito que eles fazem a mesma coisa, não? O objetivo é o mesmo de antes.

Vector<String> line = new Vector<String>();
String[] line = new String[10];

Obs: O 10 é só para o código compilar.

D

A principal diferença é que o vector é redimensionável, ele simplesmente pode crescer após ser criado, já o uso de um simples array de Strings (como eu fiz) quando criado não pode mais crescer.

Valeu.

M

vector é de uma api deve ter algum motivo especifico para se usar ele, eu particularmente nunca vi nnguem usando vector

R

Vector é mais comum em c++, mas como disse e Dinart pela vantagem de ele crescer dinamicamente acho que para o que eu preciso é mais útil.

Rodrigo_Sasaki

Bom, tenho que concordar que um objeto que trata o array para crescer e/ou diminuir de acordo com a necessidade é extremamente útil. Mas existe uma outra opção, a classe ArrayList.

Algumas diferenças, Vector é synchronized, enquanto ArrayList, não é. Portanto se você não precisa se preocupar com acesso sincronizado à sua coleção, vá de ArrayList.

Outra coisa, ambas as classes usam um array interno para conter os valores, e esse array precisa ser redimensionado, caso você queira inserir um valor novo, e o array não tiver mais índices vazios, entretanto, cada classe trata o redimensionamento de uma maneira diferente, o default do Vector é dobrar de tamanho, enquanto o do ArrayList é crescer em 50%, portanto dependendo do número de vezes que essa operação tiver que ser realizada, pode haver um impacto em performance.

Você pode alterar o tamanho do ArrayList via código se preferir, utilizando o método ensureCapacity.

Já vi alguns posts no GUJ dizendo para evitar o uso da classe Vector, agora não sei os motivos das pessoas que tem essa opinião, mas sugiro que pesquise :slight_smile:

Abraço!

EDIT: Encontrei o post falando sobre Vector, se não quiser ler ele todo, desça até o post do ViniGodoy

D

Acho que poderia colocar [RESOLVIDO] no título do post.

Valeu.

Criado 14 de junho de 2012
Ultima resposta 15 de jun. de 2012
Respostas 8
Participantes 5