1 概念及场景
**Map是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有:
1). 直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢
2). 二分查找,时间复杂度为O(log2 N) ,但搜索前必须要求序列是有序的
上述排序比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了,而现实中的查找如:
1). 根据姓名查询考试成绩
2). 通讯录,即根据姓名查询联系方式
3). 不重复集合,即需要先搜索关键字是否已经在集合中
可能在查找时进行一些插入和删除的操作,即动态查找,那上述两种方式就不太适合了,那么Map是一种适合动态查找的集合容器。
2 模型
一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对:
Key-Value 模型,比如:
统计文件中每个单词出现的次数,统计结果是每个单词都有与其对应的次数:<单词,单词出现的次数>
梁山好汉的江湖绰号:每个好汉都有自己的江湖绰号
Map中存储的就是key-value的键值对
Map
1.关于Map的说明
Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复。
关于Map.Entry<K, V>的说明
Map.Entry<String,Integer> entry = new Map.Entry<String, Integer>() {
//返回 entry 中的 key
@Override
public String getKey() {
return null;
}
//返回 entry 中的 value
@Override
public Integer getValue() {
return null;
}
//将键值对中的value替换为指定value
@Override
public Integer setValue(Integer value) {
return null;
}
};
Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较方式。
注意:Map.Entry<K,V>并没有提供设置Key的方法
HashMap 的常用方法说明
public static void main(String[] args){
Map<String,Integer> map = new HashMap<>();
//往map里添加相对的key-value 键值对
map.put("Tom",3);//设置 key 对应的 value
map.put("Tom",2);//设置 key 对应的 value
//此时当key相同时,后进去的value会覆盖已有的value
map.put("Sir",1);//设置 key 对应的 value
map.put("Bob"
本文介绍了Java中Map的概念和使用场景,重点讲解了HashMap和TreeMap的区别。Map是一个接口,不能直接实例化,其键值对的Key是唯一的。HashMap提供了高效查找,而TreeMap则维护了有序性。在Map中,Key不能重复且不能直接修改,但value可以重复并修改。总结了两者常用方法,并指出TreeMap基于红黑树,插入和查找遵循特定排序,而HashMap则是基于哈希表实现,不保证顺序。

最低0.47元/天 解锁文章
421

被折叠的 条评论
为什么被折叠?



