🌈个人主页:SKY-30
⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解
⚡学好数据结构,刷题刻不容缓:点击一起刷题
🌙心灵鸡汤:总有人要赢,为什么不能是我呢
📢📢📢Map 和Set 概念
map和set是一种用来搜索的数据结构,其搜索效率与具体实例化的子类有关,之前我们搜索的方法有:
- 直接遍历:利用for循环,暴力求解,事件复杂度为O(N)
- 二分查找:时间复杂度:O(logN),搜索之前要求序列是有序的
但是如果我们对于存储的数据,经常要执行修改和删除的操作,那么上述的两种操作就非常不适合了,我们这里就引出两个新的数据结构-map和set。
📢📢📢模式
对于map来说,它的存储形式是形如K-(key),V-(value),这种类似于键值对的这种形式,进行存储,而set,则是只有key这一种形式。
📢📢📢Map
Map是一个接口,没有继承collection,该类的存储形式是<K,V>并且这里的K是唯一的,不能重复。
📢📢📢Map.Entry<K,V>
Map.Entry<K,V>是Map内部用来存放<key,value>键值对的映射关系的一个内部类,该类提供了<Key,value>获取,value的设置,即Key的比较形式
方法 | 解释 |
---|---|
K getKey() | 返回 entry中的key |
V getValue | 返回entry中的value |
V setValue | 将键值对中的value替换为指定的value |
📢📢📢Map的一些常用方法
📢📢📢Map的一些注意事项
- Map是一个接口,不能直接实例化对象,如果要实例化,我们只能实例实现其接口的类,TreeMap和HashMap。
- Map中Key的元素是唯一的,Value可以重复的
- 在Treemap中插入元素时,Key不能为空,否则会报错,value却可以为空,需要注意在HashMap中是可以插入为空的
- Map中的Key是不能修改的,要想修改的话,只能删除对应的数据,然后重新插入,但是Value是可以重新修改的。
- Treemap和HashMap的区别,这个后面说
import java.util.TreeMap;
import java.util.Map;
public static void TestMap(){
Map<String, String> m = new TreeMap<>();
// put(key, value):插入key-value的键值对
// 如果key不存在,会将key-value的键值对插入到map中,返回null
m.put("林冲", "豹子头");
m.put("鲁智深", "花和尚");
m.put("武松", "行者");
m.put("宋江", "及时雨");
String str = m.put("李逵", "黑旋风");
System.out.println(m.size());
System.out.println(m);
// put(key,value): 注意key不能为空,但是value可以为空
// key如果为空,会抛出空指针异常
//m.put(null, "花名");
str = m.put("无名", null);
System.out.println(m.size());
// put(key, value):
// 如果key存在,会使用value替换原来key所对应的value,返回旧value
str = m.put("李逵", "