首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向列表或集合添加关键字-在添加关键字之前对其进行散列是否有任何价值

向列表或集合添加关键字-在添加关键字之前对其进行散列是否有任何价值
EN

Stack Overflow用户
提问于 2010-09-18 00:57:08
回答 3查看 77关注 0票数 0

我偶然发现了一些代码,这些代码将字符串添加到列表中,但在添加之前对值进行散列处理。

它对字符串值使用MD5散列(MD5CryptoServiceProvider),然后将其添加到列表中。

在查找列表中的键的速度方面,这样做有什么价值吗?或者这是不必要的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-18 01:18:25

首先,列表(List<T>)没有“键”。但是,Dictionary<TKey, TValue>是这样的。

其次,回答你的性能问题:不,在计算散列时实际上存在性能损失。但是,在得出不必要的结论之前,请检查周围的代码,并考虑作者是否实际上需要MD5散列和而不是字符串本身?

第三,如果您需要有效地查找某些内容,如果只需要检查其是否存在,则可以使用HashSet<T>;如果需要将查找的键与值相关联,则可以使用Dictionary<TKey, TValue>

如果您将字符串放入字典或哈希集,C#将根据您输入的任何字符串生成散列值。这通常使用比MD5快得多的散列算法。

票数 0
EN

Stack Overflow用户

发布于 2010-09-18 01:04:06

我不会假设知道您正在查看的代码的作者对他们的列表做了什么。但我要说的是,如果你有一个很大的列表,并且搜索的性能很关键,那么就有一个类来解决这个问题。HashSet<T>将很好地满足您的需求。

票数 1
EN

Stack Overflow用户

发布于 2010-09-18 01:01:28

我认为如果List的目标是提高性能,那么就没有必要这么做。字符串是字符串,无论它们是否经过哈希处理,都会以相同的方式进行查找。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3737362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档