相关疑难解决方法(0)

无论顺序如何,都获取字符串列表的哈希值

我想编写一个函数GetHashCodeOfList(),它返回一个字符串列表的哈希码,而不管顺序如何.给定具有相同字符串的2个列表应返回相同的哈希码.

ArrayList list1 = new ArrayList()    
list1.Add("String1");
list1.Add("String2");
list1.Add("String3");    

ArrayList list2 = new ArrayList()    
list2.Add("String3");    
list2.Add("String2"); 
list2.Add("String1");

GetHashCodeOfList(list1) = GetHashCodeOfList(list2) //this should be equal.
Run Code Online (Sandbox Code Playgroud)

我有几点想法:

  1. 我可以先对列表进行排序,然后将排序后的列表合并为1个长字符串然后调用GetHashCode().然而,排序是一个缓慢的操作.

  2. 我可以在列表中获取每个字符串的哈希值(通过调用string.GetHashCode()),然后乘以所有哈希值并调用Mod UInt32.MaxValue.例如:"String1".GetHashCode() * "String2".GetHashCode * … MOD UInt32.MaxValue.但这会导致数字溢出.

有人有想法吗?

在此先感谢您的帮助.

.net c# vb.net string hash

62
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1

hash ×1

string ×1

vb.net ×1