Função remove no TreeMap

10 respostas
oitathi

Eu estou tentando remover um elemento de um TreeMap, mas minha função não esta funcionando. Eu acredito q eu deva estar usando a função remove de forma incorreta. Alguém pode me ajudar?

private Map<String, BottomFrame> seleciona = new TreeMap<String, BottomFrame>(); // onde BottomFrame é uma classe que eu criei
public void deleteItem(String id){
     seleciona.remove(id);
  }

Obrigada

10 Respostas

ViniGodoy

É assim mesmo. Tem certeza que o ID que você está passando é idêntico a chave que está no TreeMap?

Por que você acha que não está funcionando?

E

O mais provável é que deve estar dando uma ConcurrentModificationException. Isso pode ocorrer quando se percorre um TreeMap com “for” sem usar o Iterator - deve-se remover o elemento usando o Iterator, não a chave.

oitathi

então viny, não tah funcionando. eu postei essa duvida http://www.guj.com.br/posts/list/213981.java, mas como ninguém respondeu, eu achei q a unica explicação pra eu não conseguir abrir a mesma janela seria q eu estaria usando errado o metodo remove()…
Mas se tah certo… então não faço a mínima ideia
:frowning:

E

“Não está funcionando” parece coisa de usuário. Diga o que ocorre:
a) Não está removendo o elemento desejado, simplesmente.
b) Está pegando uma ConcurrentModificationException.
c) Você quer remover o elemento “josé” (tudo em minúsculas) mas está cadastrado “José” (a primeira letra maiúscula).

oitathi

Mas como eu uso o iterator num TreeMap?

oitathi

Não é isso. Eu mando ele remover um frame de um TreeMap de frames. Mas o que parece é q ele não remove.
Se alguém tiver a gentileza de olhar esse topico q eu criei, entenderá o que ele não está excluindo
http://www.guj.com.br/posts/list/213981.java

E

Diga o que você quer fazer. O iterador só deve ser usado no caso 1).

  1. Você está filtrando os elementos de um TreeMap e quer eliminar tudo que bate com “josé”

  2. Você escolheu um elemento em um TreeMap e quer eliminá-lo fora de um “for”.

oitathi

eu tenho uma chave que é passada como parametro e quero remover tudo o q tiver essa chave

italons

oitathi, roda a aplicação em modo debug para saber se o seu método está realmente sendo chamado, ou sendo chamado coma chave certa.

posta aí os resultados

flw

oitathi

ele não está removendo. eu mandei ele imprir o meu treemap depois de chamada a função remove e a minha chave continuou lá. Tenho a leve impressão de que preciso usar o iterator para percorrer o meu map para assim remover a chave. Só que eu não sei fazer isso… alguém me ajuda?
Como eu faço pra remover um elemento de um TreeMap, passando uma chave como parametro, usando o iterator?

Criado 2 de agosto de 2010
Ultima resposta 3 de ago. de 2010
Respostas 10
Participantes 4