The Prototype Asked:2020-04-28 03:30:23 +0000 UTC2020-04-28 03:30:23 +0000 UTC 2020-04-28 03:30:23 +0000 UTC 从值中按值对 Map 进行排序 772 有Map<String, Warp>。该类Warp有一个方法getVisits(); 我需要获得访问量最大的 10 个经纱(getVisits();- 访问次数)。怎么做才对? java 1 个回答 Voted Best Answer Peter Samokhin 2020-04-28T03:46:00Z2020-04-28T03:46:00Z 你的班: class Warp implements Comparable<Warp> { private int visits; public Warp(int visits) { this.visits = visits; } // getters & setters @Override public int compareTo(@NotNull Warp o) { return this.visits - o.visits; } @Override public String toString() { return "Warp{" + "visits=" + visits + '}'; } } 创建并完成map: Map<String, Warp> map = new HashMap<>(); for (int i = 100; i > 0; i--) { map.put("test_" + i, new Warp(i)); } 如果输出map到控制台: {test_39=Warp{visits=39}, test_38=Warp{visits=38}, test_37=Warp{visits=37}, ..., test_86=Warp{visits=86}, test_85=Warp{visits=85}, test_84=扭曲{访问=84},test_83=扭曲{访问=83}} 在列表中排序和收集: List<Warp> list = map.entrySet().stream() .sorted(Map.Entry.comparingByValue()) .map(Map.Entry::getValue) .limit(10) .collect(Collectors.toList()); 我们输出list到控制台: [Warp{visits=1},Warp{visits=2},Warp{visits=3},Warp{visits=4},Warp{visits=5},Warp{visits=6},Warp{visits=7}, Warp{visits=8},Warp{visits=9},Warp{visits=10}] 在您的情况下,您需要反向排序: .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
你的班:
创建并完成
map:如果输出
map到控制台:在列表中排序和收集:
我们输出
list到控制台:在您的情况下,您需要反向排序: