🏀🏀🏀来都来了,不妨点个关注!
🎧🎧🎧博客主页:欢迎各位大佬!
文章目录
1. Map和Set的相关概念及说明
1.1概念及场景
Map和Set是一种专门用来进行搜索和去重操作的容器或数据结构,其搜索效率与其具体实例化的子类有关。 在以前的学习中,我们常见的搜索方式有:
- 直接遍历:时间复杂度:O(N),但当数据量巨大的时候,比如一百万个数据,且我们要搜索的效率在最后面的时候,搜索效率就会变的十分低。
- 二分查找:时间复杂度:O(logN),但它有个前提是,数据是可排序的并且数据已经是有序的。
上述排序比较适合静态的查找,即一般不会对数据进行插入删除操作了,而现实中的很多查找如下:
1.根据姓名查询成绩
2.根据身份证号查询信息
上述可能在查询的过程中会进行插入或删除操作,即动态查找,上述的方法就不适合了,而本文介绍Map和Set则是一种适合动态查找的容器。
1.2 模型
一般我们把要搜索的数据叫做关键字(Key),而关键字对应的称为值(Value),将之称为Key-Value的键值对,所以就有下如下两种模型:
1.纯Key模型:
例如英语词典,我们查找某个单词就只搜索这个关键字。一般纯Key模型也可以用来进行去重操作。
2.Key-Value模型:
例如我和女朋友经常使用学习软件里的自习室进行学习时长的记录,里面记录的值就是Key-Value模型,(我,5h),(女朋友,6.5h)。一般Key-Value模型可以用来统计某个数据出现的次数。
而Map中存储的就是key-value的键值对,Set中只存储了Key。
2. Map的相关说明
Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复
2.1 Map相关方法的介绍
通过上面这张图我们可以看出,Map的两个实例化类分别是HashMap和TreeMap。
HashMap和TreeMap的区别:
在Java中HashMap的底层是实现了一个哈希桶,本文的后面会详细介绍;而TreeMap的底层是红黑树,而红黑树是一棵近似平衡的二叉搜索树,即在二叉搜索树的基础之上 +颜色以及红黑树性质验证,关于红黑树的性质我们之后再做详解。这里我们对二叉搜索树有大致理解即可,可以翻看我之前的二叉搜索树章节进行理解。
下面我们对Map的一些常用方法进行举例:
代码实现:(这里只介绍几种)
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Test {
public static void main(String[] args) {
Map<String,String> map = new TreeMap<>();
map.put("卡莎