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


    命名空间

    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)$ 
  • 相关阅读:
    MySQl的绑定变量特性
    数数 / DP
    MODE
    题单
    对拍
    二、图论
    sync_with_stdio(false)的副作用
    九大编程语言
    Codeforces Round #575 (Div. 3) A B C
    Educational Codeforces Round 69 (Rated for Div. 2) A B C D
  • 原文地址:https://www.cnblogs.com/RicardoIsLearning/p/12116228.html
Copyright © 2020-2023  润新知