在哈希表中查找键并收集相应的值
本文关键字:哈希表 查找 | 更新日期: 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];
}
但请记住,value
是object
类型,您必须使用显式强制转换来获得Point
对象,如:
Point value = (Point) Hash[KeyToSearch] ;
如果您使用Dictionary<Point,Point>
,那么您可以在不强制转换的情况下实现相同的功能。
还有一件事要补充,这里的Point
被认为是System.Drawing
的struct
,如果它是一个类,那么ContainsKey
和基于Key
的访问将比较引用而不是实际值。如果你的Point
是一个类(引用类型),那么你必须覆盖GetHashCode
和Equals
你可以看到这个答案的更多细节。