• HashTable 和 NameValueCollection


    在做一个项目的过程中,需要将一些数据组织起来,第一个想到的就是HashTable,
    主要就是考虑它用得比较广,再然后是KEY的唯一性,于是乎就用了。用了之后就发现了后果很严重:数据加入哈希表的时候的顺序和迭代输出的顺序不一致,这问题可真严重了,既然哈希表不能满足要求,只能用其它的数据结构了,找了一下就NameValueCollection了,用起来来还真好,主是没有支持KEY的唯一性,不可无所谓了,反正我这个项目也不好要求其唯一性了。    


    关于HashTable和NameValueCollection输出顺序对比可通过以下示例得出。

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

    public class MyClass
    {
        
    public static void Main()
        
    {
        System.Collections.Hashtable ht 
    = new System.Collections.Hashtable ();
        ht.Add ( 
    "DdpMDisplaySeq".Trim ( ) , "Display Sequence".Trim ( ) );
            ht.Add ( 
    "DdpMNameChi".Trim ( ) , "Name (Chinese)".Trim ( ) );
            ht.Add ( 
    "DdpMNameEng".Trim ( ) , "Name (English)".Trim ( ) );        
            ht.Add ( 
    "Comment".Trim ( ) , "Comment".Trim ( ) );
            ht.Add ( 
    "DdpMMarketCode".Trim ( ) , "Market Code".Trim ( ) );
            
    foreach ( object key in ht.Keys )
            
    {
              Console.WriteLine( 
    "{0} {1}    {2},{3}" , key , ht[key] , key.GetHashCode() , ht[key].GetHashCode() );
            }

            NameValueCollection myCol 
    = new NameValueCollection();
            myCol.Add ( 
    "DdpMDisplaySeq".Trim ( ) , "Display Sequence".Trim ( ) );
            myCol.Add ( 
    "DdpMNameChi".Trim ( ) , "Name (Chinese)".Trim ( ) );
            myCol.Add ( 
    "DdpMNameEng".Trim ( ) , "Name (English)".Trim ( ) );        
            myCol.Add ( 
    "Comment".Trim ( ) , "Comment".Trim ( ) );
            myCol.Add ( 
    "DdpMMarketCode".Trim ( ) , "Market Code".Trim ( ) );
            
    foreach ( string key in myCol.Keys )
            
    {
              Console.WriteLine( 
    "{0}/{1}" , key , myCol[key] );
            }


            RL();
        }

        
        
    #region Helper methods

        
    private static void WL(object text, params object[] args)
        
    {
            Console.WriteLine(text.ToString(), args);    
        }

        
        
    private static void RL()
        
    {
            Console.ReadLine();    
        }

        
        
    private static void Break() 
        
    {
            System.Diagnostics.Debugger.Break();
        }


        
    #endregion

    }


    输出结果为:
    DdpMDisplaySeq Display Sequence    -1989459343,1288318213
    DdpMMarketCode Market Code    1652325269,-2031292722
    DdpMNameChi Name (Chinese)    -408135670,-703205071
    DdpMNameEng Name (English)    -1570541874,-1899340382
    Comment Comment    -498702589,-498702589
    DdpMDisplaySeq/Display Sequence
    DdpMNameChi/Name (Chinese)
    DdpMNameEng/Name (English)
    Comment/Comment
    DdpMMarketCode/Market Code

  • 相关阅读:
    [nodejs] web后端开发时, 用hapi/Joi对前端提交的数据进行校验--随笔
    [C++]类的空指针调用成员函数后,会发生什么事?
    赵家庙保险队大队长【永远置顶】
    NX二次开发-NXOpen C# OpenFileDialog弹出选择文件对话框
    NX二次开发-NXOpen C# string转tag
    NX二次开发-UFUN创建扫掠UF_MODL_create_sweep
    NX二次开发-NXOPEN C# WinForm点构造器UF.Ui.PointConstruct和UI加锁解锁UF.Ui.LockUgAccess
    vue 移动端手写手机验证码登录
    java--Scanner扫描器
    react中this.props.history实现跳转页面的使用方法
  • 原文地址:https://www.cnblogs.com/CodingPerfectWorld/p/1918506.html
Copyright © 2020-2023  润新知