SimpleHashTable
简单的Hash Table 实现,下次被问到,至少不是从0开始。不过笔试问这个毕竟不多。
public struct Item<K, V>
{
public K Key { get; set; }
public V Value { get; set; }
}
public class SimpleHashTable<K, V>
{
private int _size;
private LinkedList<Item<K, V>>[] _items;
public SimpleHashTable(int size)
{
this._size = size;
_items = new LinkedList<Item<K, V>>[_size];
}
public void Add(K key, V value)
{
var item = Find(key);
if (item == null)
{
var list = FindListByKey(key);
list.AddLast(new Item<K, V>()
{
Key = key,
Value = value
});
}
else
{
throw new Exception("The item is already exist.");
}
}
public V Find(K key)
{
var list = FindListByKey(key);
foreach (var item in list)
{
if (item.Key.Equals(key))
{
return item.Value;
}
}
return default(V);
}
public void Remove(K key)
{
var list = FindListByKey(key);
var item = list.Where(a => a.Key.Equals(key)).FirstOrDefault();
if (!item.Equals(default(Item<K, V>)))
{
list.Remove(item);
}
}
private LinkedList<Item<K, V>> FindListByKey(K key)
{
var hash = key.GetHashCode();
var index = Math.Abs(hash % _size);
if (_items[index] == null)
{
_items[index] = new LinkedList<Item<K, V>>();
}
return _items[index];
}
}
SimpleHashTable的更多相关文章
- .NET 2.0 参考源码索引
http://www.projky.com/dotnet/2.0/Microsoft/CSharp/csharpcodeprovider.cs.htmlhttp://www.projky.com/do ...
随机推荐
- 转:理解Cookie和Session机制
原文: 理解Cookie和Session机制 摘要: Cookie工作原理 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份.怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论 ...
- JavaScript——事件模型
DOM事件流: DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素结点与根节点之间按特定的顺序传播,路径所经过的节点都会收到该事件,这个传播过程可称为DOM事件 ...
- list<T>与ObservableCollection<T>
list<T>与ObservableCollection<T>的用法基本上是一样的.区别: list<T>: 当T继承于INotifyPropertyChanged ...
- JavaBean转换为XML的源码
package com.cmge.utils; import java.util.Iterator; import com.cmge.org.oa.bean.OADepartment; import ...
- WebRequest 获取网页乱码
问题:在用WebRequest获取网页源码时得到的源码是乱码. 原因:1,编码不对 解决办法:设置对应编码 WebRequest request = WebRequest.Create(Url);We ...
- UIWebView内嵌网页 Xcode7.0以后的用法
UIWebView* webPage=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight-64)]; ...
- ajax传值方式为数组
js: function responseJson1(){ var array=[1001,1002]; var str=""; //获取table对象 ...
- struts2.0整合json
框架:struts2.0+hibernate2+spring 今天写代码时,需要用到json,我就直接加了两个jar包:json-lib-2.1-jdk15.jar,struts2-json-plug ...
- 决绝Capturing 'demo' strongly in this block is likely to lead to a retain cycle
- (IBAction)onTest:(id)sender { BlockDemo *demo = [[BlockDemo alloc]init]; __weak typeof(BlockDemo) ...
- webstorm添加vue插件支持
现在已经有vue.js的插件啦,setting --> plugins 就可以咯 ------------------------------------------------ Mac端Web ...