Colocar em ordem alfabetica ArrayList

6 respostas
J

Boa tarde, estou querendo saber como faço para colocar em ordem alfabetica uma Arraylist.

os codigos seguem nesse link:
[url]http://www.guj.com.br/java/284928-arraylist--classe-abstrata--heranca-duvida-cruel#1505769[/url]

e estou fazendo esse metodo para colocar em ordem alfabetica:
public static ArrayList<Pessoa> imprimiTodosForne() throws Exception{
		ArrayList<Pessoa> listaFornecedorOrdemAlfa = new ArrayList<>();
		for(Pessoa pessoaCad : listaPessoas){
			if(pessoaCad instanceof Fornecedor){
				Fornecedor fornecedorCad = (Fornecedor) pessoaCad;
				listaFornecedorOrdemAlfa.add(fornecedorCad);
			}
		}
		if(listaFornecedorOrdemAlfa.isEmpty()){
			throw new Exception("Vendedor não existe.");	
		}else{
			return listaFornecedorOrdemAlfa;
		}
		
		
	}

Como uso o Collection.sort(lista)?

6 Respostas

caiomacedor
public Class Pessoa implements Comparator<Pessoa>{
   public int compare(Pessoa p1, Pessoa p2) {
		return this.getName.compareTo(p2.getName());
	}
}

Collections.sort(listaFornecedorOrdemAlfa, new Comparator<Pessoa>() {
					public int compare(Pessoa pes1, Pessoa pes2) {
						return pos1.getName().compareTo(pes2.getName());
					}
				});
Essa é a ideia mano... Acho que ai já da uma luz. Qualquer coisa levanta as maões ai.
therodrigoagostin
Collections.sort(list);
DaniloAndrade

Boa tarde,

para ordena usando Collection.sort(lista) sua classe pessoa tem que implementar a interface Comparable, implementar o metodo compareTo

pra saber mais http://www.caelum.com.br/download/caelum-java-objetos-fj11.pdf e consulte o capitulo “Collections framework”

marcelo.silva.java

Boa Tarde...

public class ContaCorrente extends Conta 
            implements Comparable<ContaCorrente> {

  // ... todo o código anterior fica aqui

  public int compareTo(ContaCorrente outra) {
    if (this.saldo < outra.saldo) {
      return -1;
    }

    if (this.saldo > outra.saldo) {
      return 1;
    }

    return 0;
  }
}

no exemplo acima ele comparou com o saldo....mas poder ser qualquer coisa...

assim a classe se torna Comparavel...

falow

J
package dados;

import java.io.Serializable;
import java.util.Collection;
import java.util.GregorianCalendar;

public abstract class Pessoa implements Comparable<Pessoa>, Serializable{
	
	public static final int CLIENTE = 1;
	public static final int VENDEDOR = 2;
	public static final int FORNECEDOR = 3;
	
	private int codigo;
	private String nome;
	private String telefone;
	private String email;
	private GregorianCalendar dataCad;
	
	public Pessoa(int codigo, String nome, String telefone, String email,
			GregorianCalendar dataCad) {
		super();
		this.codigo = codigo;
		this.nome = nome;
		this.telefone = telefone;
		this.email = email;
		this.dataCad = dataCad;
	}
	public abstract int getTipo();
	
	public int compareTO(Pessoa o){
		return nome.compareTo(o.nome);
	} 

	@Override
	public String toString() {
		return  "Codigo: " + codigo + "\n" + 
				"Nome: " + nome + "\n" +
				"Telefone: " + telefone + "\n" + 
				"E-mail: " + email + "\n" +
				"Data de Cadastro: " + dataCad;
	}
	
	
		
}
Certo, o metodo ta ali na classe pessoa. mas eu estou querendo ordena um lista fornecedor que e filha dessa classe:
public static ArrayList<Pessoa> imprimiTodosForne() throws Exception{
		ArrayList<Pessoa> listaFornecedorOrdemAlfa = new ArrayList<>();
		for(Pessoa pessoaCad : listaPessoas){
			if(pessoaCad instanceof Fornecedor){
				Fornecedor fornecedorCad = (Fornecedor) pessoaCad;
				listaFornecedorOrdemAlfa.add(fornecedorCad);  //<-- Onde a lista a ser ordenada recebe as "Pessoas" que São Fornecedores
			}
		}
		if(listaFornecedorOrdemAlfa.isEmpty()){
			throw new Exception("Vendedor não existe.");	
		}else{
			return listaFornecedorOrdemAlfa;
			
		}
		
		
	}

onde iria inserir o Collections.sort, e quando digito Collections. e do tecla de atalho, nao aparece nada! =/

caiomacedor

implementa o Comparable na classe Fornecedor uai… Only this.

Criado 19 de outubro de 2012
Ultima resposta 19 de out. de 2012
Respostas 6
Participantes 5