Como capturar todos os valores de um TreeMap?

3 respostas
M

Smpre trabalhei com ArrayList para armazenar objetos e para percorre-lo eu usava assim

for (int i = 0; i < arrayList.size(); i++) { System.out.println(arrayList.get(i)); }
Funciona pois o método get(i) recebe um parametro inteiro.
No caso do TreeMap, o método get recebe um objeto que é a sua KEY, e nem sempre a KEY está em sequencia (0,1,2,3,4,5), então testar pelo for é furado.
Existe algum modo de eu caputrar e mostrar todos os valores dele?

Outra coisa, um TreeMAP aceita KEY duplicada diferente do HashMap né? e a diferença dele para o HashMap, é que o TreeMAP deixa os objetos já ordenados enquanto o HashMap não, certo? Consequentemente para fazer pesquisas, um objeto TreeMAP é mais eficiente (pois seus dados já estão ordenados).

3 Respostas

R

Para iterar pelas chaves, use keySet().iterator(). Para ter um Map.Entry ( que te da um entry.getKey() e entry.getValue() ), use entrySet().iterator().

Implemetacoes de java.util.Map nao sao buscas lineares, logo “vai ser mais rpaido ja que esta ordenado” nao eh uma afirmacao valida.

Rafael

M

“Rafael Steil”:
Para iterar pelas chaves, use keySet().iterator(). Para ter um Map.Entry ( que te da um entry.getKey() e entry.getValue() ), use entrySet().iterator().

Implemetacoes de java.util.Map nao sao buscas lineares, logo “vai ser mais rpaido ja que esta ordenado” nao eh uma afirmacao valida.

Rafael

Obrigado Rafael, funcionou o esquema.

Agora eu pergunto, é mais aconselhável usar HashMap (que usa o esquema de HashTable) ou TreeMap (que usa o esquema de árvores), pergunto qual faria uma consulta mais optimizada e etc.

T

A resposta mais simples é “depende”. É a mesma coisa que perguntar se é melhor usar um caminhão ou um trator; depende de o que você normalmente precisa fazer.

Se você só precisa acessar o elemento da maneira mais rápída possível, use HashMap ou LinkedHashMap.
Se você precisa listar os elementos ordenadamente (de acordo com a chave), use TreeMap.
Se você precisa listar os elementos conforme a ordem de inserção, use LinkedHashMap.

Criado 30 de outubro de 2004
Ultima resposta 1 de nov. de 2004
Respostas 3
Participantes 3