Comparar dados que estão em uma pilha

Então pessoal estou querendo fazer um grid de largada, onde os pilotos que tem o melhor tempo irão para o topo da pilha.

Esse é o meu código

Stack<String> pilotos = new Stack<String>();


        int n1,n2;
        String nome, tempopiloto, pergunta;

        pergunta=JOptionPane.showInputDialog("Digite 1 para cadastrar o tempo e o piloto");
        n2=Integer.parseInt(pergunta);

        if (n2==1){
            for ( int i =2; i>0; i--){
            nome = JOptionPane.showInputDialog("Informe o nome do Piloto");
            tempopiloto = JOptionPane.showInputDialog("Informe o Tempo");

            pilotos.push(nome +"  "+tempopiloto);

        } 
            System.out.println(pilotos);
        }



    }
}

Enquanto o cara vai inserindo tempo e o piloto os que tem o melhor tempo vão sempre para o topo.

Será que alguém pode ajudar a fazer essa comparação e depois jogar para o topo da pilha?

Eu acho que uma PriorityQueue vai te atender bem melhor nessa situação.

Vc poderia me dar um exemplo amigo, de como isso se encaixa no meu problema?

Nunca usei a PriorityQueue, mas é sempre bom conhecer novos métodos

A fila de prioridades, como o nome diz, organiza os seus elementos de acordo com um critério de prioridade, no seu caso o critério é o menor tempo na volta. Então você implementa a comparação dessa forma, através de Comparable ou Comparator, e no momento da inserção de um novo elemento, a própria coleção irá se organizar de forma que o elemento com maior prioridade fique na frente.