Pessoal, como eu faço pra imprimir (percorrer) todos os elementos de um TreeMap?
Soh pra complementar:
Eu tenho um TreeMap que eh formado de JInternalFrames e eh ordenado por uma String chamada id, onde esse id é um dos atributos de cada uma das JInternalFrames… cada vez q um JInternalFrame é aberto, ele é inserido nessa minha TreeMap. Pois be, como eu faço pra imprimir toda a minha TreeMap:
eu tô fazendo assim:
private Map<String, BottomFrame> seleciona = new TreeMap<String, BottomFrame>(); // onde BottomFrame são os meus JInternalFrames
public void imprimeSelecionados(){
for(BottomFrame str : seleciona.values()){
//Imprimindo os valores encontrados
System.out.println(str);
}
}
Obrigada
Eis um exemplo achado na net, acho q vai te ajudar:
[code]public class TreeMapExample {
// This method prints all the mappings in the given TreeMap object.
public static void printTreeMap(TreeMap treeMap) {
System.out.print( "TreeMap: " );
// Use an Iterator to traverse the mappings in the TreeMap. Note
// that the mappings are in sorted order (with respect to the keys).
Iterator iterator = treeMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
System.out.print( "(" + entry.getKey() + ": " +
entry.getValue() + "), " );
}
System.out.println();
}
[/code]
Fonte: http://logos.cs.uic.edu/Examples%20And%20Notes/examples/JavaStatic/Java/Java-Specific%20Programming%20Tasks/Java%20Collections%20Framework%20(lists,%20maps,%20…)/TreeMapExample.java
Não funcionou
ele sou imprime o primiro System
depois mais nada
Como vc esta fazendo? aqui tenho um treemap com username e session.
O codigo mudou soh um pouco, ficou assim:
[code]public void printTreeMap(Map<String, HttpSession> treemap) {
System.out.print( "TreeMap: " );
// Use an Iterator to traverse the mappings in the TreeMap. Note
// that the mappings are in sorted order (with respect to the keys).
Iterator iterator = treemap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
System.out.print( "(" + entry.getKey() + ": " +
entry.getValue() + "), " );
}
System.out.println();
} [/code]
A declaração do meu Treemap:
private Map<String,HttpSession> logins = new TreeMap<String,HttpSession>();
A chamada, sempre q eu adiciono alguém:
logins.put((String)event.getSession().getAttribute("nome_usuario"), event.getSession());
printTreeMap(logins);
A saída:
12:27:10,514 INFO [STDOUT] TreeMap:
12:27:10,514 INFO [STDOUT] (iferreira: org.apache.catalina.session.StandardSessionFacade@7cd5146d),
12:27:10,514 INFO [STDOUT] (sergio: org.apache.catalina.session.StandardSessionFacade@af094f2),
Funcionou sim! Obrigada!!!
O problema é q eu não estou conseguindo remover um elemento da minha treeMap…

Italons, por que você não está usando os generics no seu iterator? Dessa forma você está sendo obrigado a fazer casts.
O ideal é fazer algo assim:
[code]public void printTreeMap(Map<String, HttpSession> treemap) {
System.out.print( "TreeMap: " );
// Use an Iterator to traverse the mappings in the TreeMap. Note
// that the mappings are in sorted order (with respect to the keys).
Iterator<Map.Entry<String, HttpSession>> iterator = treemap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, HttpSession> entry = iterator.next();
System.out.print( "(" + entry.getKey() + ": " +
entry.getValue() + "), " );
}
System.out.println();
} [/code]
Assim o getKey() também retorna String e o getValue() retorna um HttpSession, sem nenhum cast e com type-safety garantida.
oitathi, o que você quer fazer exatamente?
Para remover um elemento do treeMap enquanto itera sobre ele, basta chamar o método remove() do Iterator.
Para só listar os elementos, é mais fácil usar o for each:
public void imprimeSelecionados(){
for(Map.Entry<String, BottomFrame> str : seleciona.entrySet()){
//Imprimindo os valores encontrados
System.out.printf("%s=%s", str.getKey(), str.getValue().getTitle());
}
}
oi Vini, vc pode por gentileza me dar um exepmlo de como usar o metodo remove iterando um TreeMap? Eh q estou com dificultade de fazer… queria um método q apartir da chave do tipo String passada como parametro para a função, um iterator fosse percorrendo o meu TreeMap e comprando as chaves do TreeMap com a que foi passada por parâmetro, aí, se ele encontrasse essa chave no map, ele removesse, entende?
Obrigada
Mas vc nao precisa percorrer o TreeMap para remover alguém dele. Basta dar remove e depois verificar se não é nulo. No meu exemplo aqui:
[code]HttpSession result = logins.remove((String)event.getSession().getAttribute(“nome_usuario”));
if(result != null){
logger.debug(“Usuario " + username + " removido do map.”);
}[/code]
E Vini, mto obrigado pela dica!!! 
desculpa, mas o q seria HttpSession?
Ué, por que você não usa só o método remove do Map?
seleciona.remove(chave);
Como o TreeMap não pode ter chaves duplicadas, não há porque usar o iterator.
Agora, vamos supor que você realmente queira remover todos os elementos que a chave comece com uma palavra qualquer. Nesse caso, você faria assim:
public void remover(String palavra) {
//Obtém o iterador das chaves
Iterator<String> it = seleciona.keySet().iterator();
while (it.hasNext()) { //Enquanto tivermos elementos para percorrer
String chave = it.next(); //obtemos a chave
if (chave.startsWith(palavra)) { //Testamos se queremos remover essa chave
it.remove(); //Removemos esse elemento
}
}
}