搜索相关及Hashmap

一、搜索

1.什么是搜索?
从一个数据集合中,找出特定的一个或多个数据的过程

2.搜索场景面临的问题是什么?

  • 尽可能快的查到结果
  • 数据集合需要适应变化(数据集合中的数据可能实时变化着)

3.搜索中存在的模型;

  • 纯Key模型,只需要判断一个Key在不在这个集合中———Set
  • Key—Value模型,每个唯一的Key都关联着一个Value——Map

4.设计专门的数据结构 OR 算法来解决搜索问题(查找)问题
分情况:

  • 如果数据集不变(或者变化情况很少)
    最常见的算法:二分算法——条件(数据中key是有序的)
    查找:O(log(n))
    插入:O(n)
    删除:O(n)
  • 更常见的情况是,我们不但要追求查找效率,也要追求 插入/删除效率。在这个追求中间取一个中庸值
    更多的两种数据结构:哈希表、平衡搜索树

二、HashMap/HashSet和它们背后的哈希表

1.哈希表背后的机制?
利用了现代内存的随机访问是O(1)这一特性——数组根据下标访问是O(1)的
把一个大数据集查找的问题转化为多个小数据集的查找问题

搜索相关及Hashmap_第1张图片
搜索相关及Hashmap_第2张图片
2.搜索相关及Hashmap_第3张图片
3.遇到冲突的解决办法

  • 开放地址法
  • 链地址法

三、

1.搜索相关及Hashmap_第4张图片
2.搜索相关及Hashmap_第5张图片
3.搜索相关及Hashmap_第6张图片
4.搜索相关及Hashmap_第7张图片
5.在这里插入图片描述
6.
搜索相关及Hashmap_第8张图片
7.搜索相关及Hashmap_第9张图片
8.==和equals和hashCode的区别

  • ==是运算符,用于比较两个变量是否相等。
  • equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样。
  • hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等)

9.搜索相关及Hashmap_第10张图片
10.搜索相关及Hashmap_第11张图片

你可能感兴趣的:(搜索相关及Hashmap)