Ajuda com código... problema com TreeMap

3 respostas
P

Eh o seguinte..... o meu codigo vai adicionando uns objetos com umas keys que eu criei numa TreeMap com o metodo put(object key,object value)

o codigo da key eh esse:
public class Key implements Comparable{
	
	private String keyValue;
	
	public Key(String newKeyValue){
		keyValue = newKeyValue;
	}

	public int compareTo(Object o){
		if((o instanceof Key) && (((Key)o).getKeyValue().equals(this.getKeyValue()))){
			return 0;
		}else{
			return 1;
		}
	}
depois de algumas inserções de objetos diferentes com keys diferentes, algumas chaves simplesmente somem......

alguem sabe a razão???

3 Respostas

D

Tem um problema no teu método compareTo()… ele deve retornar -1 quando o objeto comparado (o argumento) for maior.

compareTo() retorna:

-1  quando   x.compareTo(y)    (x < y)

0  quando   x.compareTo(y)   (x = y)

1  quando   x.compareTo(y)   (x > y)

E você só esta retornando 1 ou 0. Talvez seja esse o motivo (não tenho certeza – precisaria ver a implementação).

P

eu pensei nisso tb… mas num faz sentido pra mim

assim… se eu usasse de chave uma string ou um int… blz um maior ou menor q o outro

mas eu usando um objeto … mas de qq forma naum consegui trabalhar com a TreeMap usando um objeto meu como key… entao eu usei um String como chave =/

fico ateh melhor mas eu ateh queria saber pq num funcionava… mas talvez fosse esse negocio do + e -

D

Veja bem pepa, um String é um objeto! (java.lang.String) :!:
Procure por TreeMap nos exemplos do The Java Almanac.

Criado 10 de outubro de 2004
Ultima resposta 11 de out. de 2004
Respostas 3
Participantes 2