Ajuda com lógica de ranking

Galera, tou com alguns problemas em fazer a lógica de ranking.

Exemplo

Objeto 1: Média = 8.0;
Objeto 2: Média = 4.0;
Objeto 3: Média = 4.0;
Objeto 4: Média = 3.0;
Objeto 5: Média = 2.0;
Objeto 6: Média = 2.0;

Quando as médias se repetem, é considerado a mesma posição.
a saida final seria

1º Objeto 1
2º Objeto 2
2º Objeto 3
3º Objeto 4
4º Objeto 5
4º Objeto 6

Alguém pode me ajudar com a lógica para fazer as poisições?

Mas qual a dificuldade?
Perceba que, pelas regras que você colocou, teremos:
Quanto maior a média, maior a posição.
Se uma ou mais médias forem iguais, a posição se repete.

Dois ifs resolvem o problema, não?
Mais ou menos como uma rotina para ordenar

for(int i = 0; i < lista.size(); i++){
	Object o = lista.get(i);
		for(int j = 0; j < lista.size(); j++){
			Object o1 = lista.get(j);
			if(o.getNota() > o1.getNota()){
			   Object tmp = o;
			   o = o1;
			   o1 = tmp;
			}
			lista.put(j, o1);
		}
	lista.put(i, o);
}

Ou alguma coisa assim

Para guardar os dados você poderia usar algo do tipo:

List< List> ranking = new ArrayList<List>();

era essa a dúvida ? Ou você precisa de alguma forma de inserir/remover/ordenar ?

Se os dados estiverem armazenados num banco sql, poderia fazer um group by pelas notas (para saber quantas posições diferentes existem) e depois faz outro select a partir da primeira lista, para ver quem tirou a nota de cada posição.

Você também pode usar uma estrutura que ordene em tempo de inserção:

	private TreeMap< Double, List<String> >  ranking;
	
	public void add(String obj, double nota){
		List<String> list = ranking.get(nota);
		
		if(list == null)
			ranking.put(nota, new ArrayList<String>());

		ranking.get(nota).add(obj);
	}
	
	public Ranking() {
		ranking = new TreeMap<Double, List<String>>();
		
		//gera 5 objetos
		Random r = new Random();
		for (int i = 0; i < 5; i++) {
			int n = r.nextInt(10);
			add( "Objeto "+ n, n );
		}
		
		int i = 0;
		for (Entry<Double, List<String>> entry : ranking.descendingMap().entrySet() )
			System.out.println( ++i +"º " + entry.getValue() );
		
	}
		 Saida:
		 1º [Objeto 7]
		 2º [Objeto 5]
		 3º [Objeto 4, Objeto 4]
		 4º [Objeto 0]

[quote=Deluxe]Quando as médias se repetem, é considerado a mesma posição.
a saida final seria

1º Objeto 1
2º Objeto 2
2º Objeto 3
3º Objeto 4
4º Objeto 5
4º Objeto 6

Alguém pode me ajudar com a lógica para fazer as poisições?[/quote]Esse é o resultado que você está conseguindo ou é o resultado esperado? Se não é o resultado esperado, qual seria o resultado correto?