C# 哈希表包含字节数组值
本文关键字:数组 字节数 字节 哈希表 包含 | 更新日期: 2023-09-27 17:55:32
我正在寻找一种快速方法来查找哈希表(字符串到字节数组)集合值是否包含给定值,我不能使用给定的包含,因为它会比较数组对象而不是其值。
我不介意使用LINQ/扩展/实现包含,只要它很短。
我试过:
byte[] givenArr = new[]{1,2,3,4}; //(a given arr)
bool contains=false;
Hashtable table;
foreach(var val in table.values)
if (CompareBytesFunction((byte[])val,givenArr))
contains=true;
其中比较字节是比较 2 个给定字节数组的函数,我觉得这不是正确的方法。 可能有一种更简单的方法可以在没有帮助程序方法的情况下获得它。
尽管它几乎违背了应该按键搜索的哈希表的概念,但您可以使用以下代码:
//suppose this is the byte array you're looking for:
byte[] b = new byte[] { 1, 3, 5 };
bool exists = myHashtable.Values.OfType<byte[]>().
ToList().Exists(c => c.SequenceEqual(b));
您可能应该实现一个可以散列和比较byte[]
的IEqualityComparer
。然后,您可以使用普通的哈希表方法。