não tem jeito, não consigo compara objeto

estou a dias tentando compara dois objeto e remove o que tem mais…

List<Credito> lista5 = new ArrayList<Credito>();  
        List<Credito> lista6 = new ArrayList<Credito>();  
        List<Credito> lista7 = new ArrayList<Credito>();  
        
        Credito a = null;
        int i = 0;
       while(i <= 3){
    	 a = new Credito();
        a.setIdCredito(1);
        a.setIdCredito(2);
        a.setIdCredito(3);
        lista5.add(a);
        ++i;
       } 
       
       Credito e = null;
       i = 0;
       while(i <= 3){
        e = new Credito();
        e.setIdCredito(1);
        e.setIdCredito(5);
        e.setIdCredito(6);
        e.setIdCredito(2);
        lista6.add(e);
        ++i;
       }
        
        
       
        lista7.addAll(lista6);
        lista7.remove(lista5);
   		
        for (int g = 0; g < lista7.size(); ++g){
   		%>
   		
         <p /><%=lista7.get(0).getIdCredito()  %> <br>
   		<% }

gostaria que alguém me ajuda-se

Estou tentando entender teu programinha aqui. Explique melhor, o que ele deveria fazer? Quais objetos tu quer comparar e o que tu quer remover de qual?

Vou começar… tu tem três List, lista5, lista6 e lista7.
Depois tu cria o Credito a e durante 3 vezes tu chama repetidas vezes o método setIdCredito(int). Mas tu só tem uma referência, tu fez isso de propósito?. Apesar de tu adicionar 3 vezes o a na Lista, ele sempre vai estar apontando para o mesmo objeto.

Depois tu faz a mesma coisa para o Credito e, só que adiciona na lista 6 ao invés da lista 5…

Depois ficou mais confuso ainda… Dá uma clareada aí no que tu queria fazer… Ou então eu que não consegui entender direito.

é o seguinte este código só é um teste pois na real também não consigo. o código retorna duas consulta sql uma tem os ids pago e outro tem os ids não foi pago. a ideia e mostra só o que não foi pago entendi.

o código e este:

//Lista de Credito a recebe.....
Collection <Credito> creditoRecebe = instancia.getconsultaCredito();
Collection <Credito> credpago      = instancia.consultaCreditoRecebido(); 

	Iterator<Credito> listaCredito = creditoRecebe.iterator();
	Iterator<Credito> listaPago    = credpago.iterator();
	
	List <Credito> cr =	new ArrayList<Credito>();
	List <Credito> pg = new ArrayList<Credito>();
	
	List <Credito> resul = new ArrayList<Credito>();
	
	
	for(int e = 0; e < creditoRecebe.size(); ++e){
		listaCredito.hasNext();
		cr.add(listaCredito.next());
		%>
		<%=cr.get(e).getIdCredito()  %><br>
		<%
	}
	%><br><br><%
	for(int e = 0; e < credpago.size(); ++e){
		listaPago.hasNext();
		pg.add(listaPago.next());
	%>
	<%=pg.get(e).getIdCredito()  %><br>
	<%
	}
	
	resul.addAll(cr);
	resul.remove(pg);
	
	%><br><br><%
	for(int e = 0; e < resul.size(); ++e){
		%>
	<%=resul.get(e).getIdCredito()  %><br>
	<%
	}
%>

obrigado por me ajuda

Cara, ta meio difícil de entender o que vc quer fazer. Mas vamos ver se endendi, vc tem uma quantidade de créditos a receber e alguns já foram pagos, assim vc quer que saber quais nao foram pagos ainda. É isso?

Acho que isso deveria ser feito diretamente no banco de dados, tipo com uma consulta SQL. Assim ficaria mais eficiente e organizado.

Dicas:
Uma coisa que notei foi o uso excessivo de scriptlet, isso “suja” muito o codigo, tenta usar um padrão, por exemplo MVC.
Outra coisa é o uso de Iterator, ao invéz de vc usar isso vc pode fazer algo como o codigo abaixo para andar na lista:

List<Aluno> listaAlunos = new ArrayList(10);
for(Aluno aluno : listaAlunos) {
     String nomeAluno = aluno.getNome();
}

abraço

Crie uma procedure SQL e uma view, depois busque esta na Camada DAO do programa.
Agora se o que tu queres é resolver o problema da comparação, posta o erro da jvm aqui, para vermos.

Antes de qualquer idéia mirabolante temos que verificar se a classe CREDITO implementa os métodos equals e hashcode.

Voce.voce implementou estes métodos?

flws

[color=blue] mestrekame e isto que você entendeu :[/color] [color=olive] tem uma quantidade de créditos a receber e alguns já foram pagos, assim vc quer que saber quais nao foram pagos ainda. É isso? [/color]

e você [color=green]fantomas [/color] não implementei os método [color=red]equals e hashcode. [/color]

como faço??? o meus métodos que retorna a consulta do banco e este:

[code]

public Collection getconsultaCredito() throws CreditoException {
// TODO Auto-generated method stub
ArrayList ar = null;
Conectar objconect= new Conectar();
Credito c = null;
StringBuffer sql = new StringBuffer();
ResultSet rs = null;

	try {
		
		objconect.getConnection();
		
		sql.append("SELECT idCredito FROM credito");
		
		rs	= objconect.executeQuery(sql.toString());
		ar  = new ArrayList<Credito>();
		
		while(rs.next()){
			c = new Credito();
			c.setIdCredito(rs.getInt(1));
			ar.add(c);
		}
		
		
		}catch (Exception ee) {
			// TODO: handle exception
		}	
	return ar;
}[/code]
public Collection<Credito> consultaCreditoRecebido()
			throws RecebeCreditoException {
		// TODO Auto-generated method stub
		ArrayList<Credito> ar	= null;
		Conectar       Objconect= new Conectar();
		ResultSet      rs		= null;
		Credito        C		= null;
		StringBuffer   sql		= new StringBuffer();			
		
		//Pega dia e mes do sistema....
		@SuppressWarnings("unused")
		Date suaData = new Date(System.currentTimeMillis());
		   
		  
		 GregorianCalendar calendarioGregoriano = new GregorianCalendar();  
		   
		   
		 String ano = String.valueOf(calendarioGregoriano.get(GregorianCalendar.YEAR));  
		 String mes = String.valueOf(calendarioGregoriano.get(GregorianCalendar.MONTH));
		 
		 //Para pega o mês atual soma + 1, pois o ano neste metodo comerça com 0 "0 à 11 mês ".
		 Integer mes1 = Integer.parseInt(mes);
		 mes1 +=1;
		
		try {
			
			Objconect.getConnection();
			//Esta SQL: selecionava na coluna mesAno o mês e ano do sistema. Ex.: 03/2009. 
					
			sql.append("SELECT DISTINCT t1.idCredito FROM credito t1, creditorecebidomes t2" +
					" where t2.mesAno = '"+mes1+"-"+ano+"' " +
							" and t1.idCredito = t2.idCreditoRecebido");
		
			rs	= Objconect.executeQuery(sql.toString());
			ar  = new ArrayList<Credito>();
			
			while(rs.next()){
				C = new Credito();
				C.setIdCredito(rs.getInt(1));
				ar.add(C);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			Objconect     = null;
			ano			  = null;
			C			  = null;
			calendarioGregoriano = null;
			mes			  = null;
			mes1		  = null;
			sql			  = null;
			suaData		  = null;
			rs			  = null;
			
		}
		
		return ar;
	}

oi tem gostaria que alguém me ajuda-se.