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相关推荐

  1. HashTable和HashMap的区别详解

    HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...

  2. ContentValues和HashTable和HashMap和properties

    java中存取key-value的有contentValues.HashTable.HashMap.properties这几个集合 ContentValues ContentValues 和HashT ...

  3. HashTable和HashMap的区别(网上整理)

    1.hashtable是继承自陈旧的Dictionary类的,而hashmap继承自AbstractMap类的同时对Java1.2引进的Map接口进行了实现. 2.hashtable的方法是同步的,而 ...

  4. HashTable 和HashMap区别

    HashTable 和HashMap区别 HashTable最早的版本是JDK1.1 ,HashMap最早版本是1.2 HashTable继承的是Dictionary抽象类 , HashMap继承的是 ...

  5. Java(ArrayList和LinkedList)、(HashTable与HashMap)、(HashMap、Hashtable、LinkedHashMap和TreeMap比较)

    1.ArrayList和LinkedList (1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.  (2)对于随机访问get和set,ArrayList绝 ...

  6. hashtable与HashMap区别

    看到了很多的面试题集里都有这么一个题:HashMap和Hashtable的区别,自己也看了好几遍了,总是不记得,写下来当是一次笔记吧. 区别一它们的父类不同 public class Hashtabl ...

  7. Hashtable和HashMap类的区别

    Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现. ...

  8. 对比Hashtable、HashMap、TreeMap有什么不同(转)

    了解 Hashtable.HashMap.TreeMap 都是最常见的一些 Map 实现,是以键值对的形式存储和操作数据的容器类型. Hashtable 是早期 Java 类库提供的一个哈希表实现,本 ...

  9. Hashtable、HashMap 与 HashTable区别、HashMap、Hashtable和TreeMap、 LinkedHashMap

    目录 Hashtable的函数都是同步的 HashMap 与 HashTable区别 HashMap.Hashtable和TreeMap LinkedHashMap 特殊新增的构造器 TreeMap ...

  10. 黑马程序员 Hashtable和HashMap的不同

    --Java培训.Android培训.iOS培训..Net培训.期待与您交流! --- Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧 ...

最新文章

  1. php关系运算符语句,PHP基础__运算符和逻辑语句(三)
  2. 快排、寻找第k小数和前k小数
  3. 搞定系统设计 00:开篇
  4. Python中的回文详解
  5. java 微信图片上传_微信小程序图片上传java端以及前端实现
  6. leetcode331. Verify Preorder Serialization of a Binary Tree
  7. [转]mysql_connect() 不支持 请检查 mysql 模块是否正确加载 解决
  8. 通过shell脚本检测MySQL服务信息
  9. flask_loginer
  10. python求解next数组实现KMP算法
  11. 鹰眼跟踪、限流降级,EDAS的微服务解决之道
  12. 浅谈数字证书安装证书原理
  13. 一文通俗入门·脉冲神经网络(SNN)·第三代神经网络
  14. 第二章软件测试基础知识
  15. zipkin链路追踪详解
  16. C语言——对文件的输入输出
  17. css 文本溢出隐藏,省略号代替
  18. python从下载链接下载文件到本地
  19. 一览29省2020年5G建设计划
  20. U盘安装系统时需要用到的快捷启动热键一览 欢迎补充

热门文章

  1. ROS防火墙规则收集
  2. Linux acpi off报告ACPI bug处理方法
  3. 创编游戏计算机课反思,游戏课创编设计(王秀英)
  4. mysql res.body_请帮我找一下错吧:body ?php $link=mysql_connect('localhost','root','123') or die (不能连接数据库...
  5. 生态系统服务——土壤保持量分布数据
  6. Floyd算法(附例题)
  7. 树算法系列之四:XGBoost
  8. 哈夫曼树的生成详解(C++)
  9. qtp java_QTP Java swing 一些控件的遍历
  10. mem考试能用计算机吗,东华大学计算机学院MEM难考吗