1.什么是搜索? 从一个数据集合中,找出特定的一个或多个数据的过程
2.搜索场景面临的问题是什么?
尽可能快的查到结果数据集合需要适应变化(数据集合中的数据可能实时变化着)3.搜索中存在的模型;
纯Key模型,只需要判断一个Key在不在这个集合中———SetKey—Value模型,每个唯一的Key都关联着一个Value——Map4.设计专门的数据结构 OR 算法来解决搜索问题(查找)问题 分情况:
如果数据集不变(或者变化情况很少) 最常见的算法:二分算法——条件(数据中key是有序的) 查找:O(log(n)) 插入:O(n) 删除:O(n)更常见的情况是,我们不但要追求查找效率,也要追求 插入/删除效率。在这个追求中间取一个中庸值 更多的两种数据结构:哈希表、平衡搜索树1.哈希表背后的机制? 利用了现代内存的随机访问是O(1)这一特性——数组根据下标访问是O(1)的 把一个大数据集查找的问题转化为多个小数据集的查找问题
2. 3.遇到冲突的解决办法
开放地址法链地址法1. 2. 3. 4. 5. 6. 7. 8.==和equals和hashCode的区别
==是运算符,用于比较两个变量是否相等。equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样。hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等)9. 10.