Map que relacione um valor com varios objetos

E ai, tudo certo?
Eu estou fazendo um programa que lê notas fiscais em XML e cria para cada nota um objeto NotaFiscal com seus atributos. Eu gostaria de fazer um map que relacionasse o mês em que a nota foi emitida com as notas emitidas no mês.

Alguém tem algum exemplo para implementar essa lógica?

Map<Mes, Set<Nota>> notas;

boa ideia!

agora funcionou. Essa é parte do código

private Cliente cliente = null;
	private List<Produto> listaDeProdutosDaNota = new ArrayList<Produto>();

	private static List<NotaFiscal> listaDeNotasFiscais = new ArrayList<NotaFiscal>();

	private static Map<Integer, NotaFiscal> numeroParaNota = new HashMap<>();
	private static Map<Integer, List<NotaFiscal>> mesParaNota = new HashMap<>();

	public NotaFiscal(int numero, double valorDaNota, Cliente cliente, List<Produto> produtos, LocalDate data) {
		this.numero = numero;
		this.valorTotal = valorDaNota;
		this.cliente = cliente;
		this.listaDeProdutosDaNota = produtos;
		this.dataDeEmissao = data;
		cliente.addNotaFiscal(this);

		if (!NotaFiscal.verificaNFe(numero)) {
			NotaFiscal.listaDeNotasFiscais.add(this);
			numeroParaNota.put(numero, this);
			
			if(mesParaNota.containsKey(this.dataDeEmissao.getMonthValue())) {
				List<NotaFiscal> notasDoMes = (ArrayList<NotaFiscal>) mesParaNota.get(this.dataDeEmissao.getMonthValue());
				notasDoMes.add(this);
			} else {
				List<NotaFiscal> notasDoMes = new ArrayList<>();
				notasDoMes.add(this);
				mesParaNota.put(this.dataDeEmissao.getMonthValue(), notasDoMes);
			}
		}
	}

Isso se chama MultiMap. Bibliotecas tipo Guava e Apache Commons tem essa estrutura de dados implementada. A vantagem de utilizar uma biblioteca é que você não vai precisar ficar gerenciando a lista.

Dá uma olhada depois.

1 curtida

Bha, muito obrigado.

Isso pode ajudar muito.