首页 > Windows开发 > 详细

【C#学习】笔记(2):哈希表

时间:2019-12-29 20:57:34      阅读:84      评论:0      收藏:0      [点我收藏+]

 

命名空间

using System.Collections;
using System.Collections.Generic;

 

基本操作

//add one key-value:
HashtableObject.Add(key, value);
//remove one key-value:
HashtableObject.Remove(key);
//remove all:           
HashtableObject.Clear();
//judge:
HashtableObject.Contains(key);

  

实例背景:要将一张表中的某列取出不重复的元素

private void moverepeat(DataTable tb)
{
    String[] val = new String[];

    //delete repeat key reactant
    Hashtable ht = new Hashtable();
    int kk = 0;//as the index
    foreach (DataRow dr in tb_KeyReactant.Rows) {
        string s = dr[1].ToString();
        if (!ht.ContainsKey(dr[1].ToString())) {
            ht.Add(dr[1].ToString(), kk.ToString());
            kk++;
        }
    }

    //sort by alpha
    ArrayList akeys = new ArrayList(ht.Keys);
    akeys.Sort();

    ICollection keys = ht.Keys;
    //get keys
    int k = 0
    foreach (string key in keys) {
        val[k] = key;
        k++;
    }

    //search keys
    String nameOfTar = "example";
    int indexOfTar = ht[nameOfTar];
}

关键点:

  • 哈希表用于去重(第8行到第14行),其中涉及两个关键方法ContainsKeyContainsValue)以及Add
  • 遍历哈希表的元素(Key/Value),由于C#中键和值都属于ICollection类,所以采用第23-26行的办法
  • 可以通过30行的代码所示,根据键去查找值,时间复杂度$O(1)$ 

【C#学习】笔记(2):哈希表

原文:https://www.cnblogs.com/RicardoIsLearning/p/12116228.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!