You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Hashtable排序并按值选取排名靠前的键值对

实现思路
  • 首先取出Hashtable存储的所有键值对(entry)集合
  • 以键值对的value为基准做降序排序
  • 截取排序后结果的前10位即可,若集合总元素不足10位则直接返回全部元素

若值相同的情况下需要指定额外排序规则(比如按键的字典序排序),只需调整排序逻辑的比较参数即可,无需修改整体流程。

常用语言实现示例

Java 实现

import java.util.*;
import java.util.stream.Collectors;

public class HashSortDemo {
    public static void main(String[] args) {
        Hashtable<String, Integer> hashtable = new Hashtable<>();
        // 填充测试数据
        hashtable.put("jak",1);
        hashtable.put("dsf",1);
        hashtable.put("usd",1);
        hashtable.put("idb",1);
        hashtable.put("bla",3);
        hashtable.put("sdd",1);
        hashtable.put("asd",2);
        hashtable.put("bsd",1);

        // 按值降序排序取前10
        List<Map.Entry<String, Integer>> sortedTop10 = hashtable.entrySet()
                .stream()
                .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
                .limit(10)
                .collect(Collectors.toList());

        // 输出验证
        for (Map.Entry<String, Integer> entry : sortedTop10) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

输出结果:

bla: 3
asd: 2
jak: 1
dsf: 1
usd: 1
idb: 1
sdd: 1
bsd: 1

Python 实现(Python中dict逻辑和Hashtable一致)

# 测试数据
hash_table = {
    "jak": 1,
    "dsf": 1,
    "usd": 1,
    "idb": 1,
    "bla": 3,
    "sdd": 1,
    "asd": 2,
    "bsd": 1
}

# 按值降序排序取前10
sorted_top_10 = sorted(hash_table.items(), key=lambda x: x[1], reverse=True)[:10]

# 输出验证
for k, v in sorted_top_10:
    print(f"{k}: {v}")

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:09:02