大概思路是继承HashTable重写个 public class MyHashTable : Hashtable { public IList<object> m_Key = new List<object>(); public MyHashTable() {
} public new void Add(object key, object value) { base.Add(key, value); m_Key.Add(key); } public new void Remove(object key) { base.Remove(key); m_Key.Remove(key); } public new void Clear() { base.Clear(); m_Key.Clear(); } public IList<object> KeyList { get { return m_Key; } } }使用 MyHashTable _Table = new MyHashTable(); for (int i = 0; i != 100; i++) { _Table.Add(i, i.ToString()); } _Table.Remove(0); for (int i = 0; i != _Table.KeyList.Count; i++) { MessageBox.Show(_Table[_Table.KeyList[i]].ToString()); }
做个类,此类两个属性KEY和VALUE class a { public string KEY { get; set; } public string VALUE { get; set; } } 用这个类的数组:a[] aa=new a[20]; 现在把行数对应数组下标就可以了
张三 100
李四 39
王五 200
……然后我把key一行一行存入一个txt文本,但是value不动它
以后我再根据value把那个文本文件中的key写进去的时候,因为value顺序乱了,就搞不成不知道有什么办法让哈希表按写入时的顺序保存呢
public class MyHashTable : Hashtable
{
public IList<object> m_Key = new List<object>();
public MyHashTable()
{
} public new void Add(object key, object value)
{
base.Add(key, value);
m_Key.Add(key);
} public new void Remove(object key)
{
base.Remove(key);
m_Key.Remove(key);
} public new void Clear()
{
base.Clear();
m_Key.Clear();
} public IList<object> KeyList { get { return m_Key; } }
}使用
MyHashTable _Table = new MyHashTable(); for (int i = 0; i != 100; i++)
{
_Table.Add(i, i.ToString());
} _Table.Remove(0);
for (int i = 0; i != _Table.KeyList.Count; i++)
{
MessageBox.Show(_Table[_Table.KeyList[i]].ToString());
}
class a
{
public string KEY { get; set; }
public string VALUE { get; set; } }
用这个类的数组:a[] aa=new a[20];
现在把行数对应数组下标就可以了