Collection/Map

Tenho a seguinte duvida:

List<DadosPessoa> listaDadosPessoa = new ArrayList<DadosPessoa>();

for (DadosPessoa dados : listaDadosPessoa) {
this.nome = dados.nome;
this.tipo = dados.tipo;
this.contrato = dados.contrato;
thiscodigo = dados.codigo;
}

Tenho que fazer uma comparação de cruzada, onde eu gero um arquivo com todas essa informações e tenho que setar o "tipo’ como “pessoa fisica” ou “pessoa juridica”, porem talvez eu tenha o mesmo “nome”, nas linhas que vou exportar, por isso a necessidade de saber se eh pessoa, definir o nome do “contrato”, por exemplo:

se eu tiver “dados.nome = joao silva e dados.tipo=15” e defino com um sequencial o seguinte contrato:

= JS15PF-501XQ1

Pra isso preciso de uma rotina que aloque todos os nomes e compare entre eles se há igualdade, por favor me ajuder…

Bem ta tudo meio confuso, mas vamos ver se chegamos em um lugar.

Para você fazer comparações em um List, temos 2 opções:

:arrow: Uma é a sua classe implementar a interface java.lang.Comparable e terá que implementar o método compareTo da interface.

:arrow: Outra forma seria criar uma classe que faça essa comparação, e essa classe deverá implementar a interface java.util.Comparator implementando o método compare.

Caso você tenha dificuldade em fazer essas implementações, posta ai para que possamos ajudar.

Att
Fabiano Fernandes

Pode me mostrar um exemplo?

ist<DadosPessoa> listaDadosPessoa = new ArrayList<DadosPessoa>();

for (DadosPessoa dados : listaDadosPessoa) {
this.nome = dados.nome;
this.tipo = dados.tipo;
this.contrato = dados.contrato;
thiscodigo = dados.codigo;
}

Tenho que gerar um arquivo com esses dados, entaum ao gerar arquivo tenho que definir a ultima informação de cada linha (contrato), por exemplo:

MARCOS LIMA PF 501 ML15PF-501XQ1
MARCO LEMOS PJ 502 ML215PJ-502XQ1
JOAO SILVA PF 503 JS15PF-503XQ1

Na realidade esse exemplo eu inventei pra dissernir melhor a duvida…
Porem eu so queria um exemplo de como se compara List ou Set para caso haja repetição de informações eu poder controlar os dados.

Desculpe a demora … to meio enrolado aqui … mas vamos lá … chega de blá blá blá.

[code]public class Pessoa implements Comparable{
private int cod;
private String nome;
private String cpf;

public Pessoa(int cod, String nome, String cpf) {
	this.cod = cod;
	this.nome = nome;
	this.cpf = cpf;
}

//get e sets

public String toString(){
	return cod + " " + nome + " " + cpf;
}
//Este método faz a comparação para ordenar naturalmente
public int compareTo(Pessoa objeto){
	return this.cod - objeto.cod;
}

}[/code]

Para testar esse exemplo segue essa classe.

[code]public class TesteCompareTo {
public static void main(String[] args) {
Pessoa people1 = new Pessoa(1528, “Fabiano Fernande”, “015.654.854-54”);
Pessoa people2 = new Pessoa(1321, “Richard Cliver”, “879.456.321-87”);
Pessoa people3 = new Pessoa(111, “Fulano de Tal”, “321.654.987-12”);
Pessoa people4 = new Pessoa(1321, “Ciclano da Silva”, “987.654.321-78”);

	comparaPessoa(people1, people2, people3, people4);
	comparaPessoa(people2, people1, people3, people4);
	comparaPessoa(people4, people3, people2, people1);
	comparaPessoa(people3, people2, people1, people4);

}

public static void comparaPessoa(Pessoa... pessoas) {

	Pessoa position = pessoas[0];

	System.out.println("A pessoa " + position.getNome());
	for (int i = 1; i < pessoas.length; i++) {
		if (position.compareTo(pessoas[i]) > 0)
			System.out.println("\tÉ maior que a pessoa "
					+ pessoas[i].getNome());
		else if (position.compareTo(pessoas[i]) < 0)
			System.out.println("\tÉ menor que a pessoa "
					+ pessoas[i].getNome());
		else if (position.compareTo(pessoas[i]) == 0)
			System.out.println("\tÉ igual a pessoa "
					+ pessoas[i].getNome());
	}

}

}
[/code]

Repare no método comparaPessoa
:arrow: Se o campo cod do objeto for menor que o mesmo campo do objeto passado, então retorna-se um número estritamente negativo, indicando que este objeto é “menor” que o objeto passado

:arrow: Se o campo cod deste objeto for maior que o mesmo campo do objeto passado, então retorna-se um número estritamente positivo, indicando que este objeto é “maior” que o objeto passado

:arrow: Se o campo cod deste objeto for igual ao mesmo campo do objeto passado, então retorna-se o número zero, indicando que este objeto é “igual” ao objeto passado.

Espero que com esse exemplo e essas observações fique mais facil você implementar a sua lógica.

Qualquer outra dúvida ou esclarecimento grita ai q tentamos ajudar

OK

:lol:

Resolvido o problema!

Obrigado, vc me ajudou muito!!

Valeu!