[color=red][size=xx-large]现在的需求是,大约有1000到2000个对象要保存到内存(ServletContext)里面,然后每个对象都有一个唯的标志,比如说QQ号码(或电子邮箱)
现在给出600到800个QQ号码(或电子邮箱)把这600到800个对象从内存里面找出来
用什么数据结构去保存比较方便LIST SET MAP还是什么?怎样才能查出来的又快又好?
先谢谢大家了
[/size][/color]
[color=red][size=xx-large]现在的需求是,大约有1000到2000个对象要保存到内存(ServletContext)里面,然后每个对象都有一个唯的标志,比如说QQ号码(或电子邮箱)
现在给出600到800个QQ号码(或电子邮箱)把这600到800个对象从内存里面找出来
用什么数据结构去保存比较方便LIST SET MAP还是什么?怎样才能查出来的又快又好?
先谢谢大家了
[/size][/color]
说下Map的原理,JavaAPI使用了一个默认大小数组,这个大小你可以自己设置Hash因子
1.put一个数据的时候先计算出Key的Hashcode
2.然后使用这个Hashcode对数组的大小进行求余
3.余数就是对象应该放入的数组位置,而这个数组里装着一个链表,一般情况是没有哈希冲突的,所以可以直接存入,如果该位置已经存在一个元素,被称为哈希冲突,这个时候就直接放入链表末尾(查找的时候也是这个步骤,当发现有冲突就进行遍历)
这也是为什么Hash表要求重写hashcode和equals方法