一、搜索
1.概念
搜索:是指在数据集合过程中查找特定元素或满足特定条件元素的过程。如:在一组数组中查找特定的数字。常见的搜索有直接遍历和二分查找.....
直接遍历和二分查找比较适合静态类型的查找,即一般不会对区间进行插入和删除操作。
所以当需要动态查找时,即查找时要进行一些插入和删除,上述的方法并不适用。如:在学生系统中,快速查找学生的成绩、统计单词出现的次数、确保用户名唯一(去重)。
Map 和 Set 是一种专门用来进行搜索的容器或者数据结构,是一种适合动态查找的集合容器。
2.模型
一般把搜索的数据称为关键字(key),和关键字对应的称为值(value),所以有两种模型:
-
1.纯 key 模型:由唯一的键(key)组成,没有与键直接关联的特定值(value)。
特点:重点在于对键的管理和操作,常用于判断某个元素是否存在。
应用场景:数据去重,黑名单过滤等......
-
2.key-value 模型:是一种键(key)和值(value)进行相关联的数据组织形式。每个键都对应着一个特定的值,通过键可以快速查找、更新与之关联的值。如查找在一串字符串中查找,某个单词在该字符串中出现的次数。
特点:键是唯一的,用于快速定位和访问对应的值,其值可以是各种类型的数据。
应用场景:广泛应用于配置文件、数据库等,比如,以用户 ID 为键,存储用户姓名等为值。
Set 只存储了 key,Map 存储的就是 key—value 的键对值。
二、Map
1.什么是 Map?
Map 是接口类,该类没有继承 Collection,储存的是<K,V>结构的键值对,并且 K 一定是唯一的,不能重复。
2.Map 的实例化
Map<K,V>是将键(key)与值(value)进行关联的数据结构,K 代表键的类型,V 代表值的类型。
Map 的实现类主要有 HashMap,TreeMap
实例化的实现:
public static void main(String[] args) {
Map<String,Integer> map1=new HashMap<>();
Map<String,Integer> map2=new TreeMap<>();
}
- Map 是一个接口,不能直接实例化对象,如果要实例化对象只能通过其实现类 TreeMap 或者 HashMap 来实现
3.Map 的常见方法
| 方法 | 解释 |
|---|---|
| V put(K key,V value) | 设置 key 值与 value 值相关联 |
| V remove(Object key) | 将 key 对应的映射关系删除 |
| V remove(Object key,Object value) | 只有指定的键与指定的值相匹配时才可以删除 |


