Map sobrescreve valor anterior

1 resposta
B

Boa noite pessoal,

Estou com uma dúvida cruel que vem tirando meu sono a algum tempo.

Estou implementando um Mapa que contém itens de locação e clientes. Ou seja, é uma lista de prioridades de locação, onde adiciono um objeto cliente e um objeto item de locação.

Estou fazendo dessa maneira:

private Map<ItemLocacao, Cliente> itemCliente = new HashMap<ItemLocacao, Cliente>();

	public boolean addItemAoCliente(Cliente cliente, ItemLocacao item) {

		boolean retorno = false;
		int encontrado = 0;

		itemCliente.put(item, cliente);
		for (int cont = 0; cont < itemCliente.size(); cont++) {
			if (encontrado < 10) {
				if (itemCliente.containsKey(item) & itemCliente.containsValue(cliente)) {
					encontrado++;
				}
				retorno = true;
			} else {
				retorno = false;
			}
		}
		return retorno;
	}

Até ai td bem, porém, qdo adiciono um segundo cliente com o mesmo item que o primeiro cliente ja tem, o segundo cliente sobrescreve o anterior, e fica só ele com o item.

assertTrue(locadora.addItemAoCliente(cliente1, filme1)); assertTrue(locadora.addItemAoCliente(cliente2, filme1));//sobrescreve o anterior

Ele não teria de adicionar uma nova linha e colocar esse segundo cliente como outro cara?

Acho q tem pêlo em ovo ai, ma snão to conseguindo identificar…

Quem tiver uma solução, agradeço desde já!!

Abs

1 Resposta

B

Os Maps tem uma pequena regra:

Como o teu ItemLocalizacao é a chave, não dá para associar mais de um cliente ligado a esse objeto.

O que você está procurando é algo chamado MultiMap, mas isso não tem ainda na API padrão do java. Você pode encontrá-lo dentro de outras bibliotecas, como o Apache Commons Collections e o Google Collections.

Criado 27 de novembro de 2009
Ultima resposta 27 de nov. de 2009
Respostas 1
Participantes 2