Erro ao percorrer as listas

10 respostas
F

Galera eu to tentando comparar duas listas para verificar se os numeros de uma estao na outra ,mas sempre da erro de cast na lista, porque???

public void validaPagamento(Collection listSindical, Collection listEmpresa){
		Iterator it= listSindical.iterator();
		Iterator it2 = listEmpresa.iterator();
		Collection listaSemPagamento = new Vector();
		Sindical_Bean beanInterno;
		Sindical_Bean beanInterno2;
		
		while (it.hasNext()) {
		String um = (String) it.next();
			while (it2.hasNext()) {
				String um1 = (String) it2.next();
							if(um.equalsIgnoreCase(um1))
								listaSemPagamento.add(um1);
					}					
		}
		
		
	    System.out.println(" tamnho "+listaSemPagamento.size());
	
}

Falow!!!

10 Respostas

micheljuca

os objetos sao apenas Strings mesmo?

F

eu corrigi o erro de cast, mas o resultado nao ta batendo com o correto ????? eu debuguei e ele ta pegando endereço de memoria em vez de numeros????

public void validaPagamento(Collection listSindical, Collection listEmpresa){
		Iterator it= listSindical.iterator();
		Iterator it2 = listEmpresa.iterator();
		Collection listaSemPagamento = new Vector();
		Sindical_Bean beanInterno;
		Sindical_Bean beanInterno2;
		
		while (it.hasNext()) {
		String um = it.next().toString();
			while (it2.hasNext()) {
				String um1 = it2.next().toString();
							if(um.equalsIgnoreCase(um1))
								listaSemPagamento.add(um);
					}					
		}
		
		
	    System.out.println("tamanho "+listaSemPagamento.size());
	
}

Falow!!!

F

sao sim estao no banco como varchar, mas sao numeros de cnpj1!

micheljuca

cara, nao lembro direito e to com preguica de testar mas eu acho que vc precisa ficar “renovando” o iterator

it2 = listEmpresa.iterator();

acho que vc so esta lendo uma vez.

EDIT

while (it.hasNext()) {
 		String um = it.next().toString();
                       t2 = listEmpresa.iterator(); 

 			while (it2.hasNext()) {
 				String um1 = it2.next().toString();
 							if(um.equalsIgnoreCase(um1))
 								listaSemPagamento.add(um);
 					}					
 		}
F
Eu ja fiz isso que voce disse, e sao todas strings mesmo 8)
public void validaPagamento(Collection listSindical, Collection listEmpresa){
		Iterator it= listSindical.iterator();
		Iterator it2 = listEmpresa.iterator(); // a lista com iterator esta aqui
		Collection listaSemPagamento = new Vector();
		Collection listaPagamento = new Vector();
		Sindical_Bean beanInterno;
		Sindical_Bean beanInterno2;
		String um;
		while (it.hasNext()) {
		um = (String)it.next().toString();
			while (it2.hasNext()) {
				String um1 =(String) it2.next().toString();
							if(um.equalsIgnoreCase(um1))
								listaSemPagamento.add(um);
							else
								listaPagamento.add(um);
					}					
		}
		
		
	    System.out.println("tamanho "+listaSemPagamento.size());
	    System.out.println("tamanho "+listaPagamento.size());
	
}

falow!!!

F

Cara essa do iterator nao deu certo , deu erro de falta de memoria no java :smiley:

Se tiver outra ideia1!!!

micheljuca

MELHORANDO… EDITEI

public static void validaPagamento(Collection listSindical,
			Collection listEmpresa) {
		Iterator it = listSindical.iterator();
		ArrayList array = new ArrayList();
		while(it.hasNext()){
			String valor = it.next().toString();
			if(listEmpresa.contains(valor)){
				System.out.println(valor + " existe na lista");
				array.add(valor);
			}
		}
		
		
	}

	public static void main(String[] args) {
		ArrayList sind = new ArrayList();
		sind.add("a");
		sind.add("c");

		ArrayList emp = new ArrayList();
		emp.add("a");
		emp.add("b");
		emp.add("c");

		validaPagamento(sind, emp);
	}
micheljuca

cara, editei a respota de cima. Era isso que vc precisava?

F

Cara eu fiz seu exemplo e deu certo aqui, mas quando eu fiz a apdtação pro meu programa ele da erro de falta de memoria , porque eu pego essas listas do banco!!1 :frowning:

valeu pela ajuda, se tiver outra ideia, enquanto eu vou tentar resolver o problema de memoria…

Mas mesmo assim valeu pela ajuda!!!

F

Cara eu adaptei pro programa real usando beans e mesmo assim ele continua dizendo que nao tem nenhuma repetição!!!

public void validaPagamento(Collection listSindical, Collection listEmpresa){
		Iterator it= listSindical.iterator();
		//Iterator it2; //=listEmpresa.iterator();; // a lista com iterator esta aqui
		//Collection listaSemPagamento = new Vector();
		//Collection listaPagamento = new Vector();
		Sindical_Bean beanInterno= new Sindical_Bean();
		//Sindical_Bean beanInterno2= new Sindical_Bean();
	
			
 		ArrayList array = new ArrayList();
 		while(it.hasNext()){
 			beanInterno =(Sindical_Bean) it.next();
 			if(listEmpresa.contains(beanInterno.getCnpj())){
 				System.out.println(beanInterno.getCnpj() + " existe na lista");
 				array.add(beanInterno.getCnpj());
 			}
 		}
 		System.out.println(array.size());
		
		
//		while (it.hasNext()) {
//			beanInterno = (Sindical_Bean)it.next();
//			
//		 
//			while (it2.hasNext()) {
//				beanInterno2 =(Sindical_Bean) it2.next();
//				
//							if(beanInterno2.getCnpj().equalsIgnoreCase(beanInterno.getCnpj()))
//								listaSemPagamento.add(beanInterno);
//							else
//								listaPagamento.add(beanInterno2);
//					}					
//		}
//		
		
	    //System.out.println("tamanho "+listaSemPagamento.size());
	   // System.out.println("tamanho "+listaPagamento.size());
	
}

FAlow!!!

se voce conseguir ver algum erro nesse codigo avisa ai beleza!!!

Criado 22 de maio de 2006
Ultima resposta 22 de mai. de 2006
Respostas 10
Participantes 2