黑马程序员技术交流社区

标题: 求教 hashtable 输出排序问题 [打印本页]

作者: 思·长安    时间: 2013-10-25 22:36
标题: 求教 hashtable 输出排序问题
本帖最后由 思·长安 于 2013-10-26 09:20 编辑

hashtable集合中保存的数据 用foreach 循环输出后

数据是什么样的排序原理 为什么与添加时候的顺序不一样呢 有没有办法按指定方式进行排序啊





作者: 吴彤辉    时间: 2013-10-25 22:43
因为hashtable内部是无序的,所以输出不一定,hashtable取数据的机制没搞明白。按照下面代码可以实现先进先出。

可以通过控制ArrayList里面keys的排序来控制hashtable的输出,当然也可以用SortedDictionary和SortedList实现排序集合。
  1. public class NoSortHashtable : Hashtable
  2.      {
  3.         private ArrayList keys = new ArrayList();

  4.         public NoSortHashtable()
  5.          {
  6.         }
  7.         

  8.         public override void Add(object key, object value)
  9.          {
  10.             base.Add (key, value);
  11.             keys.Add (key);
  12.         }

  13.         public override ICollection Keys
  14.          {
  15.             get
  16.              {
  17.                 return keys;
  18.             }
  19.         }

  20.         public override void Clear()
  21.          {
  22.             base.Clear ();
  23.             keys.Clear ();
  24.         }

  25.         public override void Remove(object key)
  26.          {
  27.             base.Remove (key);
  28.             keys.Remove    (key);
  29.         }
  30.         public override IDictionaryEnumerator GetEnumerator()
  31.          {
  32.             return base.GetEnumerator ();
  33.         }

  34.     }
复制代码

作者: 思·长安    时间: 2013-10-25 22:59
吴彤辉 发表于 2013-10-25 22:43
因为hashtable内部是无序的,所以输出不一定,hashtable取数据的机制没搞明白。按照下面代码可以实现先进先 ...

如果想排序输出的话只能用泛型吗
作者: 吴彤辉    时间: 2013-10-25 23:01
思·长安 发表于 2013-10-25 22:59
如果想排序输出的话只能用泛型吗

用泛型最方便的了
作者: 思·长安    时间: 2013-10-26 09:19
吴彤辉 发表于 2013-10-25 23:01
用泛型最方便的了

用Dictionary搞定了 谢谢你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2