• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JPVieira

Ajuda Arraylist contains

3 mensagens neste tópico

boas pessoal

tenho este código

public List <Operator> CriaLista(List <Integer> Lista){
	for(int i=0; i<Lista.size();i++)
		for(int j=0; j<Lista.size(); j++)
		{
			TSum = new Sum(Lista.get(i), Lista.get(j));
			if((i!=j) && (!TmpSum.contains(new Sum(Lista.get(i), Lista.get(j)))))
				TmpSum.add(new Sum(Lista.get(i), Lista.get(j)));
		}
return TmpSum;

A ideia é ele só adicionar se o TmpSum não tiver ainda esse objecto, o problema é que o contains me retorna sempre false mesmo que os objectos fiquem todos iguais :s o kék tou a fazer mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que o problema é de algoritmia, mais concretamente na condição:

if((i!=j) && (!TmpSum.contains(new Sum(Lista.get(i), Lista.get(j)))))

Para que queres testar o i e o j? é que se essa condição falhar ele não te adiciona nem que não esteja um objecto igual .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagina k temos uma classe abstracta operator e suas subclasses sum, subtraction, multiplication e division

E queremos que esse método recebendo uma lista de inteiros, crie uma lista com todas as operações de soma entre os numeros dessa lista... a lista criada seria na forma de List<Operator> Lista

Imagina k os elementos da lista que o método recebe seriam 12 14 22

Claro que não quero k nessa lista k apareça a soma 12 + 12, daí o i != j

e o contains era para evitar que aparecesse na lista somas que já tivessem inseridas... já tive a testar e o problema é mesmo do contains, retorna sempre false... mesmo sendo tudo igual... :s

tem de haver uma explicação

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora