标签:des style blog http color os io java ar
脑海中一直存在两个Hash,一个是HashMap另一个是HashTable,今天来总结一下两者的区别
相同点:表示根据键的哈希代码进行组织的键/值对的集合。
区别:HashMap在C#中不存在的,而是在Java中
1.C#每一个元素都是存储在DictionaryEntry对象中的键/值对,键不能为 null,但值可以。
2.在Java的HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。
因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断
using System;using System.Collections;namespace MyCollection{public class HashTableExample
{public static void Main()
{ // Create a new hash table. Hashtable openWith = new Hashtable(); // key没有重复, 但是value有重复.openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
//如果key重复,进行catch处理 try {openWith.Add("txt", "winword.exe");
}
catch { Console.WriteLine("An element with Key = \"txt\" already exists.");}
// 通过key获取valueConsole.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
//替换valueopenWith["rtf"] = "winword.exe";
Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
//遍历HashTableforeach (DictionaryEntry de in openWith)
{Console.WriteLine(de.Key);
}
//获取KeysICollection keCollection = openWith.Keys;
foreach (string s in keCollection)
{ Console.WriteLine("key = {0}",s);}
//删除指定的key openWith.Remove("doc");if (!openWith.Contains("doc"))
{ Console.WriteLine("Key\"doc\" is not found");}
}
}
}
using System;using System.Collections;using System.Collections.Generic;namespace MyCollection{ class HashTableDictionary {static void Main(string[] args)
{ Hashtable hashtable = new Hashtable();hashtable.Add("8","Name8");
hashtable.Add("2", "Name5");
hashtable.Add("5", "Name2");
hashtable.Add("1", "Name1");
foreach (var hash in hashtable.Keys)
{Console.WriteLine(hash.ToString());
}
Console.WriteLine();
Dictionary<int,string> dict = new Dictionary<int, string>();
dict.Add(8, "Name8"); dict.Add(2, "Name5"); dict.Add(5, "Name2"); dict.Add(1, "Name1");foreach (var _dict1 in dict.Keys)
{Console.WriteLine(_dict1);
}
Console.WriteLine();
Dictionary<string, string> dict2 = new Dictionary<string, string>();
dict2.Add("8", "Name8");
dict2.Add("2", "Name5");
dict2.Add("5", "Name2");
dict2.Add("1", "Name1");
foreach (var _dict2 in dict2.Keys)
{Console.WriteLine(_dict2);
}
}
}
}
标签:des style blog http color os io java ar
原文地址:http://www.cnblogs.com/zhaoqingqing/p/3951031.html