李海,谱瑞智能 2023-05-22 04:19 采纳率: 66.7%
浏览 17
已结题

C#中HashTable.Keys属性得到的key集合是有序还是无序?

看教程哈希表是无序的,但使用foreach来遍历HashTable.keys,得到的结果却是和add先后相反的顺序

HashTable Ht1=new HashTable();
Ht1.Add(1, "ab");
Ht1.Add(2, "bc"):
Ht1.Add(3, "cd");
Ht1.Add(4, "de");
foreach(var key in Ht1.Keys)
{
  Console.WriteLine(key);
}

//得到的结果是4,3,2,1,怎么试都是这个结果,不应该是乱序的吗?
请答友帮忙解答,多谢了

  • 写回答

1条回答 默认 最新

  • 於黾 2023-05-22 08:54
    关注

    所谓哈希表是无序的,不是说真的没有顺序
    因为每个具体对象的哈希值是唯一的,那么按照哈希值排序,排序也一定是唯一的
    问题是一个数字的哈希值,并不跟数字本身成正比
    也就是说,它的顺序和你平时理解的顺序是不一致的
    所以你不能用值的大小、插入的先后作为顺序的依据
    你可以试试把你的4个数据换个顺序插入,它的顺序肯定还是原来的顺序
    你换4个数据插入,就不见得还是刚好倒序的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥50 有偿!centos curl port设置问题
  • ¥15 请问Quartus的Verilog代码怎么写?
  • ¥100 Mac 版foxmail 收邮件问题
  • ¥15 QWebEngineView
  • ¥15 如何使用shufflenet进行手写数字识别
  • ¥20 微信小程序播放直播流
  • ¥15 关于迷宫自走单片机循迹小车的知识
  • ¥15 python使用selenium工具爬取网站的问题
  • ¥15 visual studio中c语言用ODBC链接SQL SERVER