Gambi no para montar o Map

Boa tarde, outro dia criei o forum http://www.guj.com.br/posts/list/82563.java#441743 com um problema com Map.

Descobri que o problema:


Integer keyCC = associaCCusto.getLancamento().getContaCreditada().getCdReduzido();
				ContaGerencial conta = centroCusto.getMapContas().get(keyCC);
				if(conta==null){
					conta = new ContaGerencial();
					conta.setCdConta(associaCCusto.getLancamento().getContaCreditada().getCdReduzido());
					conta.setNmConta(associaCCusto.getLancamento().getContaCreditada().getNmConta());
					conta.setConta(associaCCusto.getLancamento().getContaCreditada());
					centroCusto.getMapContas().put(keyCC, conta);
				}
				Integer keyCD = associaCCusto.getLancamento().getContaDebitada().getCdReduzido();
				
conta = centroCusto.getMapContas().get(keyCD);
					if(conta==null){
						conta = new ContaGerencial();
						conta.setCdConta(associaCCusto.getLancamento().getContaDebitada().getCdReduzido());
						conta.setNmConta(associaCCusto.getLancamento().getContaDebitada().getNmConta());
						conta.setConta(associaCCusto.getLancamento().getContaDebitada());
						centroCusto.getMapContas().put(keyCD, conta);
					}

Como podem reparar meu ContaGerencial pode ser de dois tipos:

associaCCusto.getLancamento().getContaCreditada()
e
associaCCusto.getLancamento().getContaDebitada()

Ele “se perde” quando tenho que criar o ContaGerencial no segundo if.
então tive q fazer uma “gambi”, coloquei um if comparando as duas chaves, e criar meu ContaGerencial dentro desse if.
Talvez não seja a forma mais elegante de resolver o problema.

Alguem tem uma solução melhor?

Uma perguntinha simples:

QUE PORRA É ESSA QUE VOCÊ TÁ TENTANDO FAZER?

hehehe,
tenho q montar um relatório, separando por centro de custo, no centro de custo, separar por conta, na conta juntar os lançamentos.

Qual é o tipo de retorno de
associaCCusto.getLancamento().getContaDebitada()
e de
associaCCusto.getLancamento().getContaCreditada()
?

Conta

Assim fica o seu código:

registrarConta(associaCCusto.getLancamento().getContaCreditada());
registrarConta(associaCCusto.getLancamento().getContaDebitada());

Em algum lugar você coloca esse método:

private void registrarConta(Conta conta) {
	Integer key = conta.getCdReduzido();
	ContaGerencial gerencial = centroCusto.getMapContas().get(key);
	if (gerencial!=null) return;
	gerencial = new ContaGerencial();
	gerencial.setCdConta(key);
	gerencial.setNmConta(conta.getNmConta());
	gerencial.setConta(conta);
	centroCusto.getMapContas().put(key, gerencial);
}

EDIT: Melhorei o código.
EDIT 2: Melhorei mais um pouco.

Vlw victorwss, funcionou.