记录总结自己的工作
分类: Java
2010-07-09 09:43:04
//哈希表,名-值对。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。
//如果以任意类型键值访问其中元素会快于其他集合。GetHashCode()方法返回一个int型数据,
//使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数
//据项在字典中存储的位置。 在.NET Framework中,Hashtable是System.Collections命名空间
//提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key
//是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,
//所以Hashtable可以支持任何类型的keyvalue键值对.
//1.使用hashtable前.需要添加System.Collections的引用
//2.添加元素
Hashtable ht =new Hashtable();
ht.Add(key,value);// key,value可以是任何类型
//如果key有重复会掷出运行时异常,你可以这样处理
if(ht.Contains(key)==false)
{
ht.Add(key,value);// 不存在则添加
}
//也可以这样处理,效率要高些
Try
{
ht.Add(key,value);
}
Catch
{
// 不处理重复异常
}
//3.删除元素
ht.Remove(key);
//4.删除所有
ht.Clear();
//5.判断键是否已经存在
ht.Contains(key) // 这个刚才已经用过了
//6.遍历键
foreach(Object key in ht.Keys)
{
}
//7.遍历值
foreach(Object value in ht.Values)
{
}
//8.同时遍历键值对
foreach(DictionaryEntry de in ht)
{
Console.WriteLine(de.Key);// 取得键
Console.WriteLine(de.Value);// 取得值
}
//9.排序输出(对值也是一样处理)
ArrayList akeys = new ArrayList(ht.Keys);
akeys.Sort();
//示例:
// Creates and initializes a new Hashtable.
Hashtable myHT = new Hashtable();
myHT.Add("one", "The");
myHT.Add("two", "quick");
myHT.Add("three", "brown");
myHT.Add("four", "fox");
// Displays the Hashtable.
Console.WriteLine("The Hashtable contains the following:");
PrintKeysAndValues(myHT);
}
public static void PrintKeysAndValues(Hashtable myHT)
{
foreach (string s in myHT.Keys)
Console.WriteLine(s);
Console.WriteLine(" -KEY- -VALUE-");
foreach (DictionaryEntry de in myHT)
Console.WriteLine(" {0}: {1}", de.Key, de.Value);
Console.WriteLine();
}
=======================================================
例子
Hashtable ht = new Hashtable();
ht.Add("Test1",test1.Text.Trim());
ht.Add("Test2",test2.Text.Trim());
ht.Add("Test3",test3.Text.Trim());
int num = ht.Count;
IDictionaryEnumerator enumerator = ht.GetEnumerator();
object[] key = new object[num];
object[] val = new object[num];
for (int i = 0; i < num; i++)
{
enumerator.MoveNext();
key[i] = enumerator.Key;
val[i] = enumerator.Value;
test4.Text = val[i].ToString() + test4.Text;
test5.Text = ht.Count.ToString();
}