C#数组和集合专题5(Hashtable排序和遍历)

②.Hashtable排序

Hashtable没有提供排序的方法,不能直接实现对象的排序。但ArrayList类有排序的方法,可以把所有的键对象存放到ArrayList中,排序完成后再从中取出每一个键对象并输出对应的员工对象。

Hashtable中的Keys属性的作用是获取包含 Hashtable 中的键的 ICollection。

ICollection 接口是 System.Collections 命名空间中类的基接口。

ICollection 接口扩展 Ienumerable、IDictionary和IList 则是扩展 ICollection 的更为专用的接口。IDictionary 实现是键/值对的集合,如 Hashtable 类。IList 实现是值的集合,其成员可通过索引访问,如 ArrayList 类。

 

在上面的main方法中加入,就可以完成对Hashtable对象的排序。

//把ht的键对象全部复制到ArrayList中

            ArrayList al = newArrayList(ht.Keys);

         /*ht.Keys返回ht中所有键对象构成的集合,把该集合传递给ArrayList构造方法则得到一个包

*所有键对象的动态数组

*/

            al.Sort();//从小到大排列

            //排序完成输出

            for (int i = 0; i < al.Count;i++ )

            {

                object e=al[i];

                Employee temp = (Employee)ht[e];//键作为索引器来获得对应的值对象

                Console.WriteLine(temp);

     }

 

我自己想了一种方法,顺序输出也达到了上面排序相同的效果,此方法只是针对键是int,如下:

for (int i = 1; i <= ht.Count; i++)

         {

                 Console.WriteLine(ht[i]);//i是object类型的key,不是索引

}

③.遍历Hashtable

还是借用上面Employee的例子,在main中输入下面的循环,其中DictionaryEntry结构是定义可以设置或检索的字典键值对

foreach(DictionaryEntry entry in ht)

             {

                 object k = entry.Key;

                 object v = entry.Value;

                 Console.WriteLine("键:{0},值:{1}",k,v);

       }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值