• 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");
                }
            }
        }
    }

    运行结果

    image

    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);
                }
            }
        }
    }
     

    运行结果

    image

  • 相关阅读:
    铁老大:不管你信不信,我是信了的NET代码版
    如何去掉字符串中的空格(转)
    DNN 社交挂件模块和DNN天气模块
    top、postop、scrolltop、scrollHeight、offsetHeight详解以及各浏览器显示效果差异
    vs2008视图菜单栏没有工具箱的解决办法
    DNN资源收集
    LINQ如何实现模糊查询
    Linq to excel
    前端各种出色的弹出层
    repo init 中指定manifest和branch的含义
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/3951031.html
Copyright © 2020-2023  润新知