Ordenar ArrayList

Eu não estou conseguindo ordenar um ArrayList…

[code]package br.com.modulo2.cap04;

import br.com.modulo2.dto.Funcionario;
import java.util.ArrayList;

public class Atividade6 {

public Atividade6() {
}

public ArrayList ordena (ArrayList lista) {
    for (int i = 0; i < lista.size() - 1; i++) {
        for (int j = i + 1; j < lista.size(); j++) {
            if (lista.get(i).nome.compareTo(lista.get(j).nome) > 0) { //Não sei o método que compara ArrayList como se fosse o compareTo() da String
                /*lista.get(lista.size() + 1) = lista.get(i);
                lista.get(j) = lista.get(i);
                lista.get(i) = lista.get(lista.size() + 1);*/
            }
        }
    }
    
}

public static void main (String[] args) {
    ArrayList al = new ArrayList();
    al.add(new Funcionario(1001, "Joao da Silva", "123.456.789-01", 'M', 2000.00));
    al.add(new Funcionario(1002, "Maria da Silva", "123.456.789-02", 'F', 1500.00));
    al.add(new Funcionario(1003, "Jose da Silva", "123.456.789-03", 'M', 10000.00));
    
    for (int i = 0; i < al.size(); i++) {
        System.out.println (al.get(i));
    }
}

}[/code]

Espero q ajude…

http://www.guj.com.br/posts/list/20989.java

http://www.guj.com.br/posts/list/37437.java

Falow !!!

tente: Arrays.sort(a1);

[code]package br.com.modulo2.cap04;

import br.com.modulo2.dto.Funcionario;
import java.text.NumberFormat;
import java.util.ArrayList;

public class Atividade6 {

public Atividade6() {
}

private static ArrayList al = new ArrayList();

private static String formata(double valor) {
    NumberFormat f = NumberFormat.getCurrencyInstance();
    return f.format(valor);
}

private static void ordena() {
    for(int i=0; i < al.size()-1; i++) {
        for(int j=i+1; j < al.size(); j++) {
            Funcionario f1 = (Funcionario)al.get(i);
            Funcionario f2 = (Funcionario)al.get(j);
            if(f1.getNome().compareTo(f2.getNome()) > 0) {
            al.set(i, f2);
            al.set(j, f1);
            }
        }
    }
}

private static void imprime() {
double total = 0, maior = 0,
       menor = Double.MAX_VALUE,
       media = 0;
System.out.println("Folha de Pagamento da Família Silva");
System.out.println("-----------------------------------");
System.out.println();
System.out.println("Código\tNome\t\t\tSexo\tSalário");
System.out.println();
for(int i=0; i < al.size(); i++) {
  Funcionario f = (Funcionario)al.get(i);
  if(f.getSalario() > maior) {
    maior = f.getSalario();
  }
  if(f.getSalario() < menor) {
    menor = f.getSalario();
  }
  total += f.getSalario();
  String s = f.getCodigo() + 
             "\t\t" + f.getNome() +
             "\t\t" + f.getSexo() +
             "\t\t" + formata(f.getSalario());
  System.out.println(s);
}
media = total / al.size();
System.out.println("Total:" + formata(total));
System.out.println("Maior:" + formata(maior));
System.out.println("Menor:" + formata(menor));
System.out.println("Média:" + formata(media));

}

private static void preenche() {
    al.add(new Funcionario(1, "Joao da Silva", "123.456.789-01", 'M', 1245.58));
    al.add(new Funcionario(2,"Maria da Silva", "123.456.789-02",'F',5245.58));
    al.add(new Funcionario(3,"Jose da Silva", "123.456.789-03",'M',2245.58));
    al.add(new Funcionario(4,"Pedro da Silva", "123.456.789-04",'M',875.58));
    al.add(new Funcionario(5,"Mara da Silva", "123.456.789-05",'F',1875.58));
    al.add(new Funcionario(6,"Antonio da Silva", "123.456.789-06",'M',1000.0));
}

public static void main (String[] args) {
    preenche();
    ordena();
    imprime();
}

}[/code]

Conseguiiiiiiiiii…

Nem usei isso…mas eu dei uma lida…vlwww!!!

De repente usando um Set vc se dá melhor! :smiley:

Você está usando Bubblesort, não?

Conselho: esqueça que o Bubblesort existe. Ele é um dos modos mais lentos de ordenar uma lista. Só se sua lista tiver uns 5 ou 6 elementos, no máximo; mais que isso e você vai passar a ter problemas sérios.

Esqueça que é possível ordenar uma lista “na mão”.

Na sua vida profissional, você tem de saber duas coisas:

  • Como usar coisas prontas, que são testadas e super-otimizadas;
  • Como não reimplementar coisas só porque você não entendeu como se usam as coisas prontas.

Sim…

Eu sei que existe outros métodos…

É pq o professor pediu com Bubblesort…

http://www.solidware.com/sort/

Neste site tem alguns métodos de ordenação com animação mostrando o que ocorre na execução…

Ah, certo, não sabia que era lição de casa.

De qualquer maneira, o problema é que os professores ensinam certas coisas mas não dizem que é para “não usar”.

O aluno acaba usando isso a vida inteira…

Acho que se o claudneto está aprendendo a fazer BubbleSort é porque na facul ele está cursando alguma disciplina de ordenação de dados.
Normalmente quando aprendemos a programar fazemos aquele for tosco comparando todos os valores de um vetor, para ver se está na ordem ou não. Depois aprendemos a usar o bubble sort, que já melhor que nada.
Provavelmente ele vai ver também como usar MergeSort, QuickSort, etc… para entender como funciona uma ordenação e também poder comparar qual método é melhor.

Espero que sim. (No meu tempo, há mais de 20 anos atrás, os algoritmos eram os mesmos - quicksort, bubblesort, heapsort etc. - e os métodos de ensino eram os mesmos, mas usando Pascal, não Java, que não existia naquele tempo).

Acho que os algoritmos não mudaram porque são simples de serem implementados.

Mas no caso do claudneto, acho que ele já deveria ter aprendido comparar 2 objetos, para depois começar a fazer algoritmos de ordenação de objetos.

Na verdade é do curso da Impacta…

O professor só comentou sobre ordenação de Arrays e Arraylists…e mostrou o Bubblesort…

Mas comentou que é o pior e que tem outros melhores…