Um TreeMap, dentro de outro TreeMap! quero pegar um valor

tipo, tenho um TreeMap1 , onde insiro um nome e no outro campo vai ter outro TreeMap2. esse TreeMap2, vai ter a data e o preço… ai eu quero pegar o preço passando o nome do produto. ai vou pegar o TreeMap correspondente ao nome do produto, e vou tentar buscar o preço a partir do dia. mas ta dando erro! ( java.lang.NullPointerException )
alguem pode ajudar?
o codigo pra insercao axo que ta certo:

CADASTRAR O PRECO;
public boolean cadastrarPreço(String nome, float preço){
Calendar c = Calendar.getInstance();
Date hoje = c.getTime();
String preço1 = String.valueOf(preço);
String data = String.valueOf(+hoje.getDate()+"/"+(hoje.getMonth()+1));
produtos.put(nome, new TreeMap().put(data , preço1));
return true;
}


PEGAR O PRECO ( TA DANDO ERRO);

public float getPreço(String nome){
TreeMap consulta = (TreeMap) produtos.get(nome);
Calendar c = Calendar.getInstance();
Date hoje = c.getTime();
String data = String.valueOf(+hoje.getDate()+"/"+(hoje.getMonth()+1));
Object o = consulta.get(data);
String p = String.valueOf(o);
float preço = Float.valueOf§.floatValue();
System.out.println(preço);
return preço;

}--------------------------------------------------------------
alguem ajuda? vlw

alguem ajuda ae!
flw

Eu acho que nessa parte:
produtos.put(nome, new TreeMap().put(data , preço1));
Você pode as vezes estar colocando um map em cima de outro, não sei exatamente o erro…

Aconselho a utilizar um debugger, e caso nao tenha, faça o seguinte: Imprima na tela o que o programa está fazendo, ai quando der o NullPointException você vai saber em que linha o comando deu erro, faça tipo:

CADASTRAR O PRECO;
public boolean cadastrarPreço(String nome, float preço){
Calendar c = Calendar.getInstance();
System.out.println(“linha 1: criei o calendario”);

Date hoje = c.getTime();
String preço1 = String.valueOf(preço);
System.out.println(“linha 3: peguei o preco”);

String data = String.valueOf(+hoje.getDate()+"/"+(hoje.getMonth()+1));
produtos.put(nome, new TreeMap().put(data , preço1));
System.out.println(“linha 5: coloquei no map”);

return true;
}

Sinceramente, tá um pouco complicada essa tua implementacao, era melhor voce fazer cria um Objeto Produto, com todos os dados, e colocar no map tipo, map.put(“nome do produto”, produto);

Valeu()

jah fiz isso, ele da pau quando vai entrar nessa parte:

Object o = consulta.get(data);

qnd ele vai tentar pegar o preco do treeMap, ai q da erro! ( pegar dentro do TreeMap que esta dentro do TreeMap… entendeu? rs)

Acho que ja sei teu erro…
em
produtos.put(nome, new TreeMap().put(data , preço1));

você tá criando um novo TreeMap e colocando a data e o preco, só que criando um novo objeto e colocando no primeiro Map (produtos) voce tá apagando o Map anterior! Por isso quando for localizar o objeto, ele não vai existir mais (NullPoint).

Quando voce for adicionar um novo preco no mesmo local, retire o TreeMap que está dentro, adicione o novo objeto, e depois coloque de volta! tipo:

precoMap = (TreeMap)produtos.get(nome);
if(precoMap == null) {
precoMap = new TreeMap();

precoMap.put(data, preco1);
produtos.put(nome, precoMap);

Eu nao testei, so segui por logica mesmo, mas se nao for este o problema, avisa!

()

consegui! vlw