import javax.swing.JOptionPane;
public class Principal {
static Lista lista = new Lista();
public static void main(String[] args) {
int i=0;
do{
Carro carro = new Carro("",0);
String nome = JOptionPane.showInputDialog("Digite o nome do carro :");
carro.setNome(nome);
int ano = Integer.parseInt(JOptionPane.showInputDialog("Digite o ano do carro :"));
carro.setAno(ano);
lista.salva(carro);
String opcao = JOptionPane.showInputDialog("Deseja encerrar? 'S'");
if(opcao.equalsIgnoreCase("s")) i++;
}while(i<1);
lista.listar();
}
}
import java.util.Vector;
public class Lista {
private Vector<Carro> lista;
public void salva(Carro carro){
lista = new Vector<Carro>();
lista.addElement(carro);
System.out.println(carro);
}
public void listar(){
for(int i =0; i<lista.size();i++){
System.out.println(lista.elementAt(i));
}
}
}
public class Carro {
private String nome;
private int ano;
public Carro(String n, int a) {
nome=n;
ano=a;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public String toString(){
return "Nome: "+nome+"\nAno :"+ano;
}
}
eu insiro uns tres carros na lista… porém quando chega no métido listar() da classe principal… só lista o ultimo pq???
Ok… agora que você terminou o seu código, que tal refatora-lo para não usar mais a classe Vector?
A classe Vector é considera obsoleta desde a versão 1.2 do Java. Recomenda-se que use no lugar uma das classes de List. A List é mais rápida (não tem sincronização), tem uma interface padrão (o que permite trocar entre vários algoritmos) e ainda é recomendada pela Sun.
Sim, foi isso que eu quis dizer. O substituto direto do Vector é o ArrayList. O do Hashtable (que também é obsoleta) é o HashMap.
O exemplo no link mostra o ArrayList e LinkedList.
O Vector originalmente não era uma classe de List, pois ele é até mesmo anterior a interface.
A interface dele apenas foi adaptada, para que se tornasse compatível e facilitar a interoperabilidade do sistema legado com o novo. Até por isso, o Vector tem métodos com funções duplicadas (addElement e add, por exemplo).
Nem mesmo quando sincronização é exigida ainda se recomenda usar Vector. Hoje a recomendação é usar um wrapper de sincronização, apenas nos métodos onde ela for necessária: