复制
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 10);
map.put("B", 5);
map.put("C", 8);
map.put("D", 3);
map.put("E", 12);
long start = System.currentTimeMillis();
String top2;
top2 = queue(map);
System.out.println(top2 + " 共计耗时:" + (System.currentTimeMillis() - start) + "ms");
}
private static String sorted(Map<String, Integer> map) {
int limit = 2;
Map<String, Integer> topN = map.entrySet().stream().sorted(Entry.<String, Integer>comparingByValue().reversed()).limit(limit)
.collect(Collectors.toMap(Entry::getKey, Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
String monthTop2Specs = topN.keySet().stream().collect(Collectors.joining(","));
return monthTop2Specs;
}
private static String queue(Map<String, Integer> map) {
PriorityQueue<Entry<String, Integer>> pq = new PriorityQueue<>(Comparator.comparingInt(Entry::getValue));
for (Entry<String, Integer> entry : map.entrySet()) {
pq.offer(entry);
if (pq.size() > 2) {
pq.poll();
}
}
List<Entry<String, Integer>> result = new ArrayList<>(pq);
result.sort((a, b) -> b.getValue() - a.getValue());
String top2 = result.stream().map(v -> v.getKey()).collect(Collectors.joining(","));
return top2;
}
private static String sort2(Map<String, Integer> map) {
int limit = 2;
List<Entry<String, Integer>> topN = new ArrayList<>();
for (Entry<String, Integer> entry : map.entrySet()) {
if (topN.size() < limit) {
topN.add(entry);
} else {
int minIndex = 0;
for (int i = 1; i < limit; i++) {
if (topN.get(i).getValue() < topN.get(minIndex).getValue()) {
minIndex = i;
}
}
if (entry.getValue() > topN.get(minIndex).getValue()) {
topN.set(minIndex, entry);
}
}
}
topN.sort((a, b) -> b.getValue() - a.getValue());
String monthTop2Specs = topN.stream().map(Entry::getKey).collect(Collectors.joining(","));
return monthTop2Specs;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架