日期:2014-05-17  浏览次数:20418 次

HashTable怎么按添加顺序输出?
问题是这样的:
1.我使用hashtable保存键值对,键为sql语句,值为参数数组
2.我按顺序添加键值对到hashtable
3.希望达到按添加的顺序输出

由于hashtable不是线性存储的,所以我们不通过遍历得到按添加顺序输出的键值对,因为我的键值对是SQL语句,添加的顺序就是执行的顺序,不能有一个被改变。所以大家有什么好的办法解决没?谢谢大家!

------解决方案--------------------
IDictionaryEnumerator hashEnumerator = hashTable.GetEnumerator();
while (hashEnumerator.MoveNext())
{
string key = hashEnumerator.Key;
string value = hashEnumerator.Value;
}
------解决方案--------------------
重写HASHTABLE:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
/// <summary>
/// NoSortHashtable 的摘要说明
/// </summary>
public class NoSortHashtable:Hashtable
{
private ArrayList keys = new ArrayList(); public NoSortHashtable()
{
}
public override void Add(object key, object value)
{
base.Add(key, value);
keys.Add(key);
} public override ICollection Keys
{
get
{
return keys;
}
} public override void Clear()
{
base.Clear();
keys.Clear();
} public override void Remove(object key)
{
base.Remove(key);
keys.Remove(key);
}
public override IDictionaryEnumerator GetEnumerator()
{
return base.GetEnumerator();
}}

------解决方案--------------------
参数数组是什么类型的,object[]?如果是这样干嘛不用dictionary?它的效率比hashtabe,而且写代码也不用写转换语句,也是按添加顺序排列的。
------解决方案--------------------
Dictionary<string,object[]>
------解决方案--------------------
探讨
IDictionaryEnumerator hashEnumerator = hashTable.GetEnumerator();
while (hashEnumerator.MoveNext())
{
string key = hashEnumerator.Key;
string value = hashEnumerator.Value;
}