博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashTable Dictionary HashMap
阅读量:6231 次
发布时间:2019-06-21

本文共 2430 字,大约阅读时间需要 8 分钟。

HashTable和HashMap

脑海中一直存在两个Hash,一个是HashMap另一个是HashTable,今天来总结一下两者的区别

相同点:表示根据键的哈希代码进行组织的键/值对的集合。

区别:HashMap在C#中不存在的,而是在Java中

1.C#每一个元素都是存储在DictionaryEntry对象中的键/值对,键不能为 null,但值可以。

2.在Java的HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。

因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断

HashTable示例

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获取value
Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
 
//替换value
openWith["rtf"] = "winword.exe";
Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
 
//遍历HashTable
foreach (DictionaryEntry de in openWith)
{
Console.WriteLine(de.Key);
}
 
//获取Keys
ICollection 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");
}
}
}
}

运行结果

HashTable和Dictionary

示例代码

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
dict = new Dictionary
();
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
dict2 = new Dictionary
();
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);
}
}
}
}
 

运行结果

转载于:https://www.cnblogs.com/zhaoqingqing/p/3951031.html

你可能感兴趣的文章
spring boot 加载过程分析--ConfigurationClassPostProcessor
查看>>
Python基础教程,第九讲,异常处理
查看>>
再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦
查看>>
一看就会的 egret 入门教程
查看>>
大型互联网 b2b b2c o2o 电子商务微服务云平台
查看>>
Flutter之可滑动Widget
查看>>
富文本编辑器-CKeditor5
查看>>
前端基础22:数组迭代基本方法
查看>>
GGally与pairs相关关系图_史上最全(一)
查看>>
从内存映射mmap说开去
查看>>
Swift4如何扫描二维码了解一下
查看>>
散列表:如何实现word编辑器的拼写检查?
查看>>
可用的哈希函数(一)
查看>>
js关于数组常用函数
查看>>
Swift 项目总结 02 常用分类方法
查看>>
字符串&Math&Date
查看>>
复习webpack4之环境变量
查看>>
Linux - IO
查看>>
给大家整理了19个pythonic的编程习惯
查看>>
JVM之内存回收算法
查看>>