iVictor777z Postado Novembro 7, 2017 Denunciar Compartilhar Postado Novembro 7, 2017 Gostaria de saber como fazer um top 3 com uma hashmap. Link para o comentário Compartilhar em outros sites More sharing options...
DEVKEWI Postado Novembro 7, 2017 Denunciar Compartilhar Postado Novembro 7, 2017 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 1 Link para o comentário Compartilhar em outros sites More sharing options...
Kami Postado Novembro 7, 2017 Denunciar Compartilhar Postado Novembro 7, 2017 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 More sharing options...
iVictor777z Postado Novembro 7, 2017 Autor Denunciar Compartilhar Postado Novembro 7, 2017 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 More sharing options...
Kami Postado Novembro 7, 2017 Denunciar Compartilhar Postado Novembro 7, 2017 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 More sharing options...
Katho Postado Novembro 7, 2017 Denunciar Compartilhar Postado Novembro 7, 2017 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 More sharing options...
leonardosc Postado Novembro 7, 2017 Denunciar Compartilhar Postado Novembro 7, 2017 (editado) 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 Novembro 7, 2017 por leonardosc 1 Link para o comentário Compartilhar em outros sites More sharing options...
lucakiksd07 Postado Novembro 8, 2017 Denunciar Compartilhar Postado Novembro 8, 2017 Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.Atenciosamente,Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
iVictor777z
Gostaria de saber como fazer um top 3 com uma hashmap.
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados