zoukankan      html  css  js  c++  java
  • HashTable初次体验

    用惯了数组、ArryList,初次接触到HashTable、Dictionary这种字典储存对于我来说简直就是高大上。

    1.到底什么是HashTable

       HashTable就是哈希表,和数组一样,是一种数据储存的方式,但是相对于数组,HashTable属于乱序储存,不会按照输入的顺序进行储存。详情可以参阅MSDN关于HashTable的叙述。

       对于HashTable和常用数组的区别,可以在园子里边搜索。

    在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。

    Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

    2.HashTable怎么用?

       在哈希表中添加一个keyvalue键值对:HashtableObject.Add(key,value);
       在哈希表中去除某个keyvalue键值对:HashtableObject.Remove(key);
       从哈希表中移除所有元素:HashtableObject.Clear();
       判断哈希表是否包含特定键key:HashtableObject.Contains(key);

      

    1 //使用前需要先new一个hashtable
    2 HashTable hashtable=new HashTable();
    3 //添加一个元素(key+value)
    4 hashtable.Add("国家","省份");
    5 hashtable。Add("","");
    6 //移除一个元素
    7 hashtabl.Remove("");
    8 //清空
    9 hashtable.Clear();

    3.举个栗子
      输入一句或一段英文,计算出每个字符出现的次数。(利用hashtable)

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Collections;
     6 
     7 namespace hashtable
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             //新建一个hashtable
    14             Hashtable ht = new Hashtable();            
    15             Console.WriteLine("Input:");
    16             //获取输入的字符串
    17             string str=Console.ReadLine();
    18             int temp = str.Length;//临时储存输入字符串的长度
    19             char[] sToc=new char[temp];
    20             //将输入的字符串转存为字符数组
    21             sToc = str.ToCharArray();
    22             int j = 0;            
    23             for (int i = 0; i < temp;i++ )
    24             {
    25                 int x = 0;//用于记录每个字符出现的次数               
    26                 char c = sToc[i];
    27                 for (int y = i; y < temp; y++)
    28                 {
    29                     if (c == sToc[y])
    30                         x++;
    31                 }
    32                 //判定hashtable中是否已经包含该键值?Y:next,N:将该键值储存到hashtable中
    33                 if (!ht.ContainsKey(c))
    34                 {
    35                     ht.Add(c, x);
    36                 }                
    37             }
    38              //遍历所有键值,输出
    39             foreach (char strr in ht.Keys)
    40             {
    41                 Console.WriteLine(strr+":"+ht[strr]);
    42             }
    43             Console.ReadKey();
    44         }
    45     }
    46 }

    代码写的有点匆忙,没有进行过多测试,如有不足,还请各位指正。

    测试截图:

  • 相关阅读:
    python编写规范
    我们分析了400位华语歌手的歌词,发现人们重点关注的人事物情
    外部厂商公开工具
    OSI七层与TCP/IP五层网络架构详解
    npm run dev--The 'mode' option has not been set, webpack will fallback to 'production' for this value
    webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
    PPTV(pplive)_forap_1084_9993.exe 木马清除经历
    【转】【Nginx】Nginx 入门教程 + 常用配置解析
    【转】【Python】Python 中文编码报错
    【Centos】systemd入门教程
  • 原文地址:https://www.cnblogs.com/dranched/p/3997709.html
Copyright © 2011-2022 走看看