Hashset e Vector [RESOLVIDO]

4 respostas
R

Minha dúvida é a seguinte:

Quando é melhor usar a classe Vector e quando usar Hashset, qual a principal diferença entre os dois?

Obrigado.

4 Respostas

edmarr

De uma olhada em http://www.guj.com.br/posts/list/34305.java

ViniGodoy

Classes ArrayList e LinkedList (interface List):
Use quando você quer uma lista, com ou sem repetições, que pode ser acessada através de um índice.
Exemplo:

List<String> nomes = new ArrayList<String>();
nomes.add("João"); 
nomes.add("José"); 
nomes.add("João"); //Ok, podem haver repetições
System.out.println(nomes.get(2));
//Listando tudo, você ainda vê o nome duplicado
for (String nome : nomes) {
   System.out.println(nome);
}

Classes HashSet, LinkedHashSet e TreeSet (interface Set):
Use quando você quer um conjunto de dados, sem repetição. O TreeSet deve ser usado quando os dados devem ser ordenados.

Set<String> nomes = new HashSet<String>();
nomes.add("João"); 
nomes.add("José"); 
nomes.add("João"); //Será descartado. Esse método retorna false nessa linha
nomes.add("Ana");

//System.out.println(nomes.get(2));  --> Não existe get por índice num set

//Listando tudo, você não vê o nome duplicado
for (String nome : nomes) {
   System.out.println(nome);
}

//Troque depois de HashSet para TreeSet e verá a lista ordenada

Classes HashMap, TreeMap (interface Map):
Use quando você quer associar uma chave a um valor. O TreeMap é usado se a chave tiver de ser ordenado.

Map<String, int> idades = new HashMap<String>();
idades.add("João", 15); 
idades.add("José", 12); 
idades.add("João", 20); //Substitui a idade 15, por 20. Não existem chaves duplicadas

System.out.println(idades.get("José"));  //Imprime 12

//Listando tudo, você não vê o nome duplicado
for (Entry<String,int> pessoa : idades.entrySet()) {
   System.out.println(pessoa.getKey() + " tem " + pessoa.getValue() + " anos.");
}

//Troque depois de HashMap para TreeMap e verá a lista ordenada.

Classes Vector e Hashtable: Vector é um caso de list, Hashtable de set, mas são implementações antigas e não devem ser usadas a menos que você esteja numa versão de java inferior a 1.2.

ViniGodoy

Inclui uns exemplos ali em cima, para ficar mais claro.

R

Valeu pessoal, muito obrigado, agora vou testar o funcionamento baseado no que vcs me falaram.

Criado 24 de agosto de 2009
Ultima resposta 24 de ago. de 2009
Respostas 4
Participantes 3