Map indexado por mes+ano Guardando uma collection

3 respostas
R

Senhores,

Estou fazerndo uma rotinha para agrupar registros tendo por chave deste agrupamento o key mes+ano.

para isso dentro do meu for comecei a fazer o seguinte.

map.put(data.getMes()+"/"+data.getAno(), registro);

Porém eu já sei que ele vai sempre sobrescrevendo o elemento que tiver a chave igual.

A pergunta é: como posso fazer para ter a chave e uma coleção de registros. guardadas no map

a saída final seria algo em torno disso

02/2007

  • registro1
  • registro2
  • registro4

obrigado turma.

3 Respostas

S

ola, nao sei exatamente qual a filidade, se sera ordenacao ou
uma procura posterior pelo dado, mas poderia utilizar algo abaixo.

map.put(data.getMes()+"/"+data.getAno() + System.currentTimeMillis(), registro);

ou fazer um sequenciamento um outro tipo de dados por mes

int x=mapSeq.get(082007);

e pelo que retornar, adicionar ao map.put(mes/ano+x,registro)

e posterior a isso fazer algo assim

mapSeq.put(081007,x+1);

e assim sucessivamente

espero ter ajudado

at+

Sandro Lemanski da Silva

R

Achoq eu vc não leu bem.

Senhores resolvi da seguinte form

if (!map.containsKey(data.getMes()+"/"+data.getAno())) map.put(data.getMes()+"/"+data.getAno(), new ArrayList()); ((ArrayList)map.get(data.getMes()+"/"+data.getAno())).add(registro);

agradeço,

Adolfo_Rodrigues

Você primeiro insere um ArrayList vazio no map pra depois inserir os objetos nele, quando ele já está no map.
Por que você não monta o ArrayList antes e depois insere no map com tudo dentro?

Criado 16 de agosto de 2007
Ultima resposta 16 de ago. de 2007
Respostas 3
Participantes 3