博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NameValueCollection与Hashtable的区别
阅读量:4993 次
发布时间:2019-06-12

本文共 2519 字,大约阅读时间需要 8 分钟。

在做一个项目的过程中,需要将一些数据组织起来,第一个想到的就是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();

}
Helper methods#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

2.NameValueCollection与Hashtable的区别
a.引用区别

hashtable:using System.Collections;

NameValueCollection:using System.Collections.Specialized;

b.键是否重复

NameValueCollection:允许重复.

HashTable是键-值集合,但键不能出现重复.

NameValueCollection myCol = new NameValueCollection();
myCol.Add("red", "rojo");//如果键值red相同结果合并 rojo,rouge
myCol.Add("green", "verde");
myCol.Add("blue", "azul");
myCol.Add("red", "rouge");

 

转载于:https://www.cnblogs.com/xust/articles/2621373.html

你可能感兴趣的文章
第二个spring冲刺第3天
查看>>
AwSnap:让全版本(Windows、iOS、Android)Chrome浏览器崩溃的有趣漏洞
查看>>
线段树合并学习笔记
查看>>
AndroidAutoLayout
查看>>
样本不均衡下的分类损失函数
查看>>
node启动服务后,窗口不能关闭。pm2了解一下
查看>>
vsCode 改变主题
查看>>
【vijos】【树形dp】佳佳的魔法药水
查看>>
聚合新闻头条
查看>>
Ubuntu 关闭锁屏界面的 on-screen keyboard
查看>>
凸优化学习笔记
查看>>
使用ehcache-spring-annotations开启ehcache的注解功能
查看>>
Charles设置HTTPS抓包
查看>>
NGUI出现Shader wants normals, but the mesh UIAtlas doesn't have them
查看>>
Boost.Asio c++ 网络编程翻译(14)
查看>>
Codeforces Round #306 (Div. 2) D.E. 解题报告
查看>>
uva 1557 - Calendar Game(博弈)
查看>>
HDU1051 Wooden Sticks 【贪婪】
查看>>
十大经典数据挖掘算法
查看>>
Rhythmbox乱码的解决的方法
查看>>