HashTable Dictionary HashMap
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<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);
}
}
}
}
运行结果
转载于:https://www.cnblogs.com/zhaoqingqing/p/3951031.html
HashTable Dictionary HashMap相关推荐
- HashTable和HashMap的区别详解
HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...
- ContentValues和HashTable和HashMap和properties
java中存取key-value的有contentValues.HashTable.HashMap.properties这几个集合 ContentValues ContentValues 和HashT ...
- HashTable和HashMap的区别(网上整理)
1.hashtable是继承自陈旧的Dictionary类的,而hashmap继承自AbstractMap类的同时对Java1.2引进的Map接口进行了实现. 2.hashtable的方法是同步的,而 ...
- HashTable 和HashMap区别
HashTable 和HashMap区别 HashTable最早的版本是JDK1.1 ,HashMap最早版本是1.2 HashTable继承的是Dictionary抽象类 , HashMap继承的是 ...
- Java(ArrayList和LinkedList)、(HashTable与HashMap)、(HashMap、Hashtable、LinkedHashMap和TreeMap比较)
1.ArrayList和LinkedList (1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. (2)对于随机访问get和set,ArrayList绝 ...
- hashtable与HashMap区别
看到了很多的面试题集里都有这么一个题:HashMap和Hashtable的区别,自己也看了好几遍了,总是不记得,写下来当是一次笔记吧. 区别一它们的父类不同 public class Hashtabl ...
- Hashtable和HashMap类的区别
Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现. ...
- 对比Hashtable、HashMap、TreeMap有什么不同(转)
了解 Hashtable.HashMap.TreeMap 都是最常见的一些 Map 实现,是以键值对的形式存储和操作数据的容器类型. Hashtable 是早期 Java 类库提供的一个哈希表实现,本 ...
- Hashtable、HashMap 与 HashTable区别、HashMap、Hashtable和TreeMap、 LinkedHashMap
目录 Hashtable的函数都是同步的 HashMap 与 HashTable区别 HashMap.Hashtable和TreeMap LinkedHashMap 特殊新增的构造器 TreeMap ...
- 黑马程序员 Hashtable和HashMap的不同
--Java培训.Android培训.iOS培训..Net培训.期待与您交流! --- Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧 ...
最新文章
- php关系运算符语句,PHP基础__运算符和逻辑语句(三)
- 快排、寻找第k小数和前k小数
- 搞定系统设计 00:开篇
- Python中的回文详解
- java 微信图片上传_微信小程序图片上传java端以及前端实现
- leetcode331. Verify Preorder Serialization of a Binary Tree
- [转]mysql_connect() 不支持 请检查 mysql 模块是否正确加载 解决
- 通过shell脚本检测MySQL服务信息
- flask_loginer
- python求解next数组实现KMP算法
- 鹰眼跟踪、限流降级,EDAS的微服务解决之道
- 浅谈数字证书安装证书原理
- 一文通俗入门·脉冲神经网络(SNN)·第三代神经网络
- 第二章软件测试基础知识
- zipkin链路追踪详解
- C语言——对文件的输入输出
- css 文本溢出隐藏,省略号代替
- python从下载链接下载文件到本地
- 一览29省2020年5G建设计划
- U盘安装系统时需要用到的快捷启动热键一览 欢迎补充
热门文章
- ROS防火墙规则收集
- Linux acpi off报告ACPI bug处理方法
- 创编游戏计算机课反思,游戏课创编设计(王秀英)
- mysql res.body_请帮我找一下错吧:body ?php $link=mysql_connect('localhost','root','123') or die (不能连接数据库...
- 生态系统服务——土壤保持量分布数据
- Floyd算法(附例题)
- 树算法系列之四:XGBoost
- 哈夫曼树的生成详解(C++)
- qtp java_QTP Java swing 一些控件的遍历
- mem考试能用计算机吗,东华大学计算机学院MEM难考吗