Oi galera! Tudo Bem!
É a minha primeira vez no fórum! Estou até emocionada! :choroo:
Falando sério, eu gostaria de saber como eu posso fazer um Ranking.
o que eu fiz não deu certo. Se por exemplo, uma pessoa que tivesse 20 pontos em um jogo e estivesse em terceiro lugar, perdesse esse lugar pra uma que fizesse 21, o novo colocado seria colocado em terceiro lugar, mas o que estava em terceiro, seria apagado da lista em vez de passar pro quarto lugar.
Alguém poderia me dar uma dica?
Desde já, obrigada. 
Obrigada pela dica, mas como eu faço pra passar o nome e os pontos de um lugar para outros, sem perder a informação anterior?
Ex:
1.º - João 12
2.º - Maria 10
3.º - Paulo 8
Juca joga e faz 15 pontos:
1.º - Juca 15
2.º - João 12
3.º - Maria 10
e Paulo é removido.
Quando eu tento fazer isso, O João é removido, o Juca vai pro lugar dele e a Maria e o Paulo continuam no mesmo lugar.
Vocês poderiam me dar um exemplo de como solucionar esse problema?
Resolvi fazer o código, pois existem muitos detalhes que seriam demorados para explicar. Aquilo que não entender, busque na literatura.
import java.util.Comparator;
import java.util.TreeSet;
/**
* @Author Vinci Amorim
* 16/06/2005
*/
public class Raking {
private static final TreeSet ranking = new TreeSet(new PessoaComparator());
private static final int RANK_MAX = 3;
private static void rankear(Pessoa p) {
// Adicionar pessoa a colecao
ranking.add(p);
if(ranking.size() > RANK_MAX)
ranking.remove(ranking.last());
}
public static void main(String[] args) {
rankear(new Pessoa(1, "A"));
rankear(new Pessoa(2, "B"));
rankear(new Pessoa(3, "C"));
rankear(new Pessoa(4, "D"));
rankear(new Pessoa(3, "E"));
rankear(new Pessoa(2, "F"));
rankear(new Pessoa(1, "G"));
System.out.println(ranking);
}
}
class Pessoa {
private final int pontuacao;
private final String nome;
public String getNome() {
return nome;
}
public int getPontuacao() {
return pontuacao;
}
public Pessoa(int pontuacao, String nome) {
this.pontuacao = pontuacao;
this.nome = nome;
}
public boolean equals(Object o) {
if (o instanceof Pessoa) {
Pessoa aPessoa = (Pessoa) o;
return aPessoa.nome.equals(nome);
}
return false;
}
public int hashCode() {
return nome.hashCode();
}
public String toString() {
return nome + " (" + pontuacao + ") ";
}
}
class PessoaComparator implements Comparator{
public int compare(Object o1, Object o2) {
Pessoa p1 = (Pessoa) o1;
Pessoa p2 = (Pessoa) o2;
return p2.getPontuacao() - p1.getPontuacao();
}
}
A saída deve ser [quote][D (4) , C (3) , B (2) ][/quote]
Espero que isso não seja um trabalhinho da faculdade… :roll:
Obrigada!!! Valeu mesmo.
Eu vou pesquisar sim, pode deixar!
E pode ficar tranquilo! E ainda nem estou na faculdade!

Mais uma vez, obrigada!!!
Descobri um erro sutil! O método hashCode da classe Pessoa estava apenas como hash.
O hashCode na classe pessoa é uma redefinição do método hashCode da classe object. Já hash é apenas a criação de um novo método, que no contexto, nunca seria chamado…
Mas o único problema disso é perda de eficiência… Se tiver a oportunidade de estudar Estruturas de Dados, vai saber o de perda de eficiência…