Método contains()

É o seguinte:

Tenho três listas: uma vazia (lista 1), uma com um list de Documentos (lista 2) e outra com um list de DocumentosEnviados (lista 3). A primeira lista vai receber Documentos da lista 2 e depois vai receber documentos da lista 3. Porém, documentos da lista 2 podem, e normalmente vão, estar na lista 3, mas não necessariamente.

Inicialmente eu populo a lista 1 com os documentos da lista 2 e depois preciso popular a lista 1 com os documentos da lista 3 que não foram adicionados na lista 1. Estou usando o método contains para verificar a existência do objeto na lista, mas, ainda assim, o contains continua inserindo os objetos.

E agora? Vou colocar o código comentado para vcs.


// Método que retorna os documentos para envio: Cadastrado e Destinados
	public List<Documento> getDocumentosLogado(){
		List<Documento> listaDocLogado = new ArrayList<Documento>();
		for (Documento documento : this.getDocumentos()) {
			if(documento.getFuncionario().getNome().equals(this.loginBean.getFuncionarioL().getNome())){
				listaDocLogado.add(documento); // lista 1: Documentos cadastrados pelo próprio funcionário
			}
		}
		EnviarDocumentoBean listaEnviados = new EnviarDocumentoBean();
		for (EnviarDocumento enviarDocumento : listaEnviados.getEnviarDocumentos()) { // lista 2: Todos os documentos da entidade EnviarDocumentoBean enviados para o funcionário
			if(!listaDocLogado.contains(enviarDocumento.getDocumento())){
				listaDocLogado.add(enviarDocumento.getDocumento());
			}
		}
		return listaDocLogado;
	}

Boa noite Macksuel!

e sem em vez de usar uma instancia de List, você usasse uma instancia de Set, tipo um HashSet?

segue o link de referencia para vc saber do que to falando:
http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html

Basicamente uma instancia de Set não deixa haver dois objetos iguais na sua coleção.

Faz o teste ai e me fala, muda a lista1 para HashSet set1 e vê se funciona