Porque é assim que listas em geral funcionam. Se você quer evitar duplicidade de elementos, você deve usar um Set, e não uma list. Além do mais, a classe do elementos deve sobrescrever equals e hashCode apropriadamente.
F
fernando.camargo
Tem certeza que não é o método que você chama que já não retorna a lista com valores duplicados, não?
Porque se já tivesse alguns valores na lista e você usasse addAll, poderia duplicar se você não tivesse reescrito o equals e o hashcode da classe. Mas como você adiciona em uma lista recém criada, quem está duplicando é o método que você chama, com certeza.
lucasportela
Com certeza você está preenchendo sua lista 2x com o:
TipoDaVariavel lista = contrato.getListaFaturasIsentas();
if (lista != null ){
boolean testeGUJ = listFaturas.addAll( lista );
}
Isso dai faz diferença em questão de performance, mas em momento algum ele armazena o retorno do método na lista quando ele testa no if. O problema provavelmente esteja dentro desse método e não nesse trecho do código.
lucasportela
Justamente, a gente não sabe como ele está fazendo dentro deste método, mas pelo o que eu entendi só pode ser isto, vamos aguardar uma resposta. De repente essa lista está num Singleton e ele usa o get 2x, acho que é isso.