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 }

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

    测试截图:

  • 相关阅读:
    storm学习之七-storm UI页面参数详解
    kafka学习之-KafkaOffsetMonitor后台监控
    hbase深入了解
    storm学习之六-使用Maven 生成jar包多种方式
    kafka学习之-集群配置及安装
    Python的Web应用框架--Django
    plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory
    key-value数据库-Redis
    SUSE 12安装详解
    分布式网络文件系统--MooseFS
  • 原文地址:https://www.cnblogs.com/dranched/p/3997709.html
Copyright © 2011-2022 走看看