判断Dictionary中Key是否存在

zhaizhaoxuan 2010-10-04 05:29:57
怎么判断Dictionary中,指定的Key已存在
...全文
15890 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-10-04
  • 打赏
  • 举报
回复
Dictionary<int, string> dic = new Dictionary<int, string>();
if(dic.Keys.Contains<int>(id))
{
}
dic.ContainsKey(keyvalue)
兔子-顾问 2010-10-04
  • 打赏
  • 举报
回复
Dictionary.ContainsKey 方法
http://msdn.microsoft.com/zh-cn/library/kw5aaea4(VS.80).aspx
种草德鲁伊 2010-10-04
  • 打赏
  • 举报
回复
if(dict.ContainsKey(T key))
{
//已存在key
}
/* * 基于散列表实现的(无序)词典结构 * 采用分离链策略解决冲突 */ package dsa; public class Dictionary_HashTable implements Dictionary { private Dictionary[] A;//桶数组,每个桶本身也是一个(基于列表实现的)词典结构 private int N;//散列表长 private final double maxLemda = 0.75;//装填因子上限 private int size;//词典结构的规模 private EqualityTester T;//判等器 //默认构造方法 public Dictionary_HashTable() { this(0, new EqualityTesterDefault()); } //构造方法 public Dictionary_HashTable(int n, EqualityTester t) { T = t; N = p(n);//桶数组容量取为不小于n的最小素数 A = new Dictionary[N]; for (int i=0; iDictionary_DLNode(T); size = 0; } /***************************** 辅助方法 *****************************/ //散列定址函数(采用模余法) private int h(Object key) { return key.hashCode() % N; } //判断n是否为素数 private static boolean prime(int n) { for (int i=3; i<1+Math.sqrt(n); i++) if (n/i*i == n) return false; return true; } //取不小于n的最小素数 private static int p(int n) { if (3>n) n = 3; n = n | 1;//奇数化 while (!prime(n)) n += 2; return n; } /***************************** ADT方法 *****************************/ //查询词典结构当前的规模 public int getSize() { return size; } //判断词典结构是否为空 public boolean isEmpty() { return 0==size; } //若词典存在以key为关键码的条目,则返回其的一个条目;否则,返回null public Entry find(Object key) { return A[h(key)].find(key); } //返回由关键码为key的条目组成的迭代器 public Iterator findAll(Object key) { return A[h(key)].findAll(key); } //插入条目(key, value),并返回该条目 public Entry insert(Object key, Object value) { Entry entry = A[h(key)].insert(key, value);//将新条目插至桶A[h(key)]对应的子词典 size ++;//更新规模记录 if (size > N * maxLemda) rehash();//若装填因子过大,则重散列 return entry;//返回null标志 } //若词典存在以key为关键码的条目,则将其摘除并返回;否则,返回null public Entry remove(Object key) { Entry oldEntry = A[h(key)].remove(key); if (null!=oldEntry) size--; return oldEntry; } //返回词典所有条目的一个迭代器 public Iterator entries() { List L = new List_DLNode(); for (int i=0; iDictionary[N];//桶数组容量至少加倍 for (int i=0; iDictionary_DLNode(T);//为每个桶分配一个子词典 while (it.hasNext()) {//将其对应的词典结构的 Entry e = (Entry)it.getNext();//各条目逐一取出,将其 Object k = e.getKey();//关键码和 Object v = e.getValue();//数据对象 A[h(k)].insert(k, v);//整合为新的条目,插入对应的子词典 } } }

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧