Como ordenar um Arraylist?

Oi pessoal! Estou com uma dúvida e é meio urgente… pra um trabalho que preciso entregar amanhã!! =//
Preciso ordenar meu arraylist pra depois imprimir todo o seu conteúdo (Nome do produto, quantidade do produto e preço do produto). Mas não sei como ordená-lo… já tentei usar sort, mas acho que na linha a qual usei, meu código está errado. Meu arraylist é o seguinte:

Criei uma classe Produto assim:

[code]public class Produto {
private String nome;
private int quantidade;
private int preco;

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public int getPreco() {
	return preco;
}

public void setPreco(int preco) {
	this.preco = preco;
}

public int getQuantidade() {
	return quantidade;
}

public void setQuantidade(int quantidade) {
	this.quantidade = quantidade;
}

}[/code]

Aí eu pego os nomes dos produtos do meu array loja e ordeno em ordem alfabética. Depois imprimo. A parte de imprimir eu consigo, mas o problema maior é essa ordenação aí :frowning:
Como fazer? Me ajudem, por favor. Preciso que me digam o código, a única linha que preciso escrever ali pra ordenar …
Agradeço desde já!

é so usar o metodo sort da Classe Collection.

[]'s

se vc quer ordenar por Produto precisa dizer como o java deve fazer isso.
uma maneira é implementar a interface Compareble e sobrescrever o metodo compareTo. la vc diz quais atributod vc quer que sejam levados em consideração n hora de comparar seus objetos.
Se vc der uma pesquisada no forum vai achar varios exemplos de como fazer isso.
ou de uma olhada aqui

[]'s

Oi Rulldra, basta usar o método sort da Classe Collection. Mas para isso você vai ter que implementar o método compareTo. Ficaria assim no caso de ordenar pelo preço:

public class Produto implements Comparable{
// …
// …
public int compareTo(Produto produto) {
if(this.preco < produto.preco) {
return -1;
}
if(this.preco > produto.preco) {
return 1;
}
return 0;
}
}

Você pode definir também a ordem de classificação somente trocando de lugar o “-1” e o “1”.

Depois é só chamar o método antes de imprimir:
Collections.sort(loja);

Só aproveitando o tópico.
Se você tem dúviadas sobre Collection, aconselho você estudar todas elas antes de sair usando. Muitas vezes, você pode estar “escolhendo” a Collection errada para determinado requisito.

Vai ai apenas uma dica :wink:

Odilair, o problema é imprimir em ordem de Nomes!
Como eu faço?!! Eu preciso entregar esse trabalho hoje e só falta isso!! Me ajudem, por favooor!! :frowning:

Ué, faz a mesma coisa que o Odilair fez, porém com o atributo nome :?

Como?!!

“this.nome < produto.nome” ??

Acredite se quiser, já fiz isso… mas dá erro, pq não dá pra comparar strings assim… e outra coisa: essa parte do código eu coloco na classe Produto ou na visual class Loja? (Se for na Produto, então o que eu coloco na Loja? E se for na Loja, o que eu coloco na Produto?)
:frowning:

Leia a documentacao do JavaDoc sobre a interface Comparable e o metodo compareTo :wink:

No caso de Strings fica só um pouquinho diferente:

public class Produto implements Comparable{
// …
// …
public int compareTo(Produto produto) {
if(this.nome.compareTo(produto.nome) < 0) {
return -1 ;
}
if(this.nome.compareTo(produto.nome) > 0) {
return 1;
}
return 0;
}
}

Pronto, e basta colocar esse código na classe Produto como exemplificado antes.