Ir para conteúdo
  • 0

Top HashMap


iVictor777z

Pergunta

7 respostass a esta questão

Posts Recomendados

Tente usar SortedMap:

 

Crie uma Map para os ranks, exemplo:

Map<String, Integer> ranks = new HashMap()<>;
List<Map.Entry<String, Integer>> sorted = new ArrayList<>(rank.entrySet());
  Collections.sort(sorted, new Comparator<Map.Entry<String, Integer>>() {
    @Override
    public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
      return Integer.compare(o2.getValue(), o1.getValue());
    }
});
rank1 = sorted.get(0).getKey();
rank2 = sorted.get(1).getKey();
rank3 = sorted.get(2).getKey();
//Código retirado do MagicGladiador

Lembre-se de verificar se a String é nulla

Link para o comentário
Compartilhar em outros sites

Tu pode fazer tipo:

HashMap<String, Integer> rank; // Na string vai o nick e no Integer vai a posição
// vc pode usar UUID tbm se quiser

public Class(){
  rank = new HashMap<>();
}

private void putInRank(String nick, int position){
  rank.put(nick, position);
}

esse código deve estar com erro de sintaxe pra caralho pq eu fiz direto aqui no fórum e faz tempo q eu n programo, sorry

Link para o comentário
Compartilhar em outros sites

Tu pode fazer tipo:

HashMap<String, Integer> rank; // Na string vai o nick e no Integer vai a posição
// vc pode usar UUID tbm se quiser

public Class(){
  rank = new HashMap<>();
}

private void putInRank(String nick, int position){
  rank.put(nick, position);
}

esse código deve estar com erro de sintaxe pra caralho pq eu fiz direto aqui no fórum e faz tempo q eu n programo, sorry

Eu já tenho os valores e tals, exemplo:

 

Joao - 1

Maria - 2

Josivaldo - 3

 

O top seria:

Josivaldo

Maria

Joao

Link para o comentário
Compartilhar em outros sites

Eu já tenho os valores e tals, exemplo:

 

Joao - 1

Maria - 2

Josivaldo - 3

 

O top seria:

Josivaldo

Maria

Joao

Pro método putInRank você passa o nick e a posição do cara, tipo:

 

Eu fiquei em primeiro, então:

putInRank(p.getName(), 1);

 

mas inverte essa parada ai, muda pra <Integer, String> vai ficar melhor

Link para o comentário
Compartilhar em outros sites

Dependendo de quantas pessoas você pretender colocar no rank e de quanto tempo o rank tem que durar n iria ser nada bom fazer por uma HashMap vc teria que escolher uma estrutura de dado que mais fosse viavel pra você. porém existem banco de dados que retornam querys ordenadas rapidamente. porém conforme o tamanho da HashMap aumentasse o tempo pra ordenar a lista também aumentaria.

Link para o comentário
Compartilhar em outros sites

Já respondi essa mesma pergunta umas 3 vezes aqui no fórum ,-,

 

Código:

// Exemplos de valores
Map<String, Integer> map = new HashMap<>();
map.put("Foo", 233);
map.put("Bar", 76);
map.put("Quux", 762);
map.put("Fuux", 272);

// Esta parte sorteia
map.entrySet()
  .stream()
  .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
  .limit(3) // Pega somente 3
  .forEach(e -> {
    // Aqui você envia no chat ou salva em algum lugar.
    
    System.out.println(e.getKey() + " " + e.getValue());
  });


/*
Resultado:
Quux 762
Fuux 272
Foo 233
Bar 76
gg ez
*/
Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...