0xFFFF Postado Outubro 6, 2017 Denunciar Compartilhar Postado Outubro 6, 2017 Bem, tem varios objetos em uma hashmap, nessa hashmap a chave é Int, queria fazer um top 5 pegando todos os valores da hashmap. Link para o comentário Compartilhar em outros sites More sharing options...
jeta Postado Outubro 6, 2017 Denunciar Compartilhar Postado Outubro 6, 2017 (editado) voce pode usar o método sort da classe Collections exemplo: List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4, 2)); System.out.println("Lista desorganizada: " + list); Collections.sort(list, (a, b) -> a - b); System.out.println("Lista organizada: " + list); Editado Outubro 6, 2017 por jeta Link para o comentário Compartilhar em outros sites More sharing options...
0xFFFF Postado Outubro 7, 2017 Autor Denunciar Compartilhar Postado Outubro 7, 2017 voce pode usar o método sort da classe Collections exemplo: List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4, 2)); System.out.println("Lista desorganizada: " + list); Collections.sort(list, (a, b) -> a - b); System.out.println("Lista organizada: " + list); Isso se aplica a hashmap também ? Link para o comentário Compartilhar em outros sites More sharing options...
jeta Postado Outubro 7, 2017 Denunciar Compartilhar Postado Outubro 7, 2017 Isso se aplica a hashmap também ? Só você usar map.values() [retorna os valores] ou map.keySet() [retorna as chaves] Link para o comentário Compartilhar em outros sites More sharing options...
0xFFFF Postado Outubro 7, 2017 Autor Denunciar Compartilhar Postado Outubro 7, 2017 voce pode usar o método sort da classe Collections exemplo: List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4, 2)); System.out.println("Lista desorganizada: " + list); Collections.sort(list, (a, b) -> a - b); System.out.println("Lista organizada: " + list); Ainda não entendi como pega o top1,2,3 e 4 ... Link para o comentário Compartilhar em outros sites More sharing options...
FilipeNock Postado Outubro 7, 2017 Denunciar Compartilhar Postado Outubro 7, 2017 Eu uso isso: public void top5() { Map<String, Integer> playerskills = new HashMap<>(); playerskills.put("FilipeNock", 220); playerskills.put("Notch", 560); playerskills.put("DeadByAUnicorn", 5); playerskills = sortByValue(playerskills); int top = 1; for (String s : playerskills.keySet()) { if (top < 5) { Bukkit.broadcastMessage("TOP "+top+" : Kills: " + playerskills.get(s)); top++; } } } public Map<String, Integer> sortByValue(Map<String, Integer> map) { List<Map.Entry<String, Integer>> list = new LinkedList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> m1, Map.Entry<String, Integer> m2) { return (m2.getValue()).compareTo(m1.getValue()); } }); Map<String, Integer> result = new LinkedHashMap<String, Integer>(); for (Map.Entry<String, Integer> entry : list) { result.put(entry.getKey(), entry.getValue()); } return result; } Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Outubro 7, 2017 Denunciar Compartilhar Postado Outubro 7, 2017 LinkedHashMap<Integer, String> sortedMap = SUA_HASHMAP.entrySet().stream() .sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); sortedMap.forEach((key, value) -> System.out.printLn("#" + key + " - " + value) ); Link para o comentário Compartilhar em outros sites More sharing options...
Pica-Pau Postado Outubro 7, 2017 Denunciar Compartilhar Postado Outubro 7, 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
0xFFFF
Bem, tem varios objetos em uma hashmap, nessa hashmap a chave é Int, queria fazer um top 5 pegando todos os valores da hashmap.
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados