在哈希表中查找键并收集相应的值

本文关键字:哈希表 查找 | 更新日期: 2023-09-27 18:18:59

谁能告诉我如何在哈希表中搜索特定的键并将相应的值放在变量中(例如键和值都来自类point)

我按如下方式添加值:

Hashtable Hash = new Hashtable();     
Hash.Add(new Point(Po.X - 1, Po.Y), new Point(Po.X, Po.Y));

在哈希表中查找键并收集相应的值

您可以使用以下命令:

Point value;
if (Hash.ContainsKey(YourKey))
{
    value = (Point)Hash[YourKey];
}

你应该看看通用的Dictionary<T,T>而不是HashTable(如果您使用的是。net framework 2.0或更高版本)

但是如果你想从当前的非通用HashTable中获得键,你可以这样做:

var KeyToSearch = new Point(10 - 1, 20);
if (Hash.ContainsKey(KeyToSearch))
{
    var value = Hash[KeyToSearch];
}

但请记住,valueobject类型,您必须使用显式强制转换来获得Point对象,如:

Point value = (Point) Hash[KeyToSearch] ;

如果您使用Dictionary<Point,Point>,那么您可以在不强制转换的情况下实现相同的功能。

还有一件事要补充,这里的Point被认为是System.Drawingstruct,如果它是一个类,那么ContainsKey和基于Key的访问将比较引用而不是实际值。如果你的Point是一个类(引用类型),那么你必须覆盖GetHashCodeEquals你可以看到这个答案的更多细节。