搜索相关及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)的
把一个大数据集查找的问题转化为多个小数据集的查找问题

在这里插入图片描述
在这里插入图片描述
2.在这里插入图片描述
3.遇到冲突的解决办法

  • 开放地址法
  • 链地址法

三、

1.在这里插入图片描述
2.在这里插入图片描述
3.在这里插入图片描述
4.在这里插入图片描述
5.在这里插入图片描述
6.
在这里插入图片描述
7.在这里插入图片描述
8.==和equals和hashCode的区别

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

9.在这里插入图片描述
10.在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值