zoukankan      html  css  js  c++  java
  • 【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)$ 
  • 相关阅读:
    oracle里的tns是什么意思
    什么是联机分析处理(OLAP)
    JDBC和ODBC
    mysql 乱码
    eclipse常用快捷键和插件
    数仓项目01:准备工作
    github、maven、idea初始化一个项目
    数仓项目02:集群搭建
    数仓项目03:数据采集层(Flume+Kafka)
    Java Swing 日期控件(转载)
  • 原文地址:https://www.cnblogs.com/RicardoIsLearning/p/12116228.html
Copyright © 2011-2022 走看看