理解 Map 接口
Map 中存储的是键值对(Key Value),通过Key 来找到相应的 Value
其中 key 要求是不能重复的
Map 常用操作:以 HashMap 为例
1.创建 Map 实例:
import java.util.HashMap;
import java.util.Map;
public class TestMap {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
}
}
泛型参数有两个,第一个参数是 key 的类型,第二个参数是 value 的类型
key value 这种结构最主要的目的就是根据 key 找到对应的 value
2.使用 size() 获取元素个数:
即:键值对的个数
Map<String,String> map = new HashMap<>();
System.out.println(map.size());
输出结果:0
3.使用 isEmpty 查看是否为空:
即:键值对的个数
Map<String,String> map = new HashMap<>();
System.out.println(map.isEmpty());
输出结果:true
4.使用 put 方法存放键值对:
Map<String,String> map = new HashMap<>();
map.put("西游记","吴承恩");
map.put("红楼梦","曹雪芹");
map.put("水浒传","施耐庵");
map.put("三国演义","罗贯中");
5.使用 get 方法,根据 key 查找对应的 value:
Map<String,String> map = new HashMap<>();
map.put("西游记","吴承恩");
map.put("红楼梦","曹雪芹");
map.put("水浒传","施耐庵");
map.put("三国演义","罗贯中");
System.out.println(map.get("红楼梦"));
System.out.println(map.get("西游记"));
System.out.println(map.get("Java"));
输出结果:
若 key 不存在,则返回 null
6.使用 getOrDefault 方法:
如何 key 不存在,返回默认值
Map<String,String> map = new HashMap<>();
map.put("西游记","吴承恩");
map.put("红楼梦","曹雪芹");
map.put("水浒传","施耐庵");
map.put("三国演义","罗贯中");
System.out.println(map.getOrDefault("Java","不存在!"));
输出结果:
7.通过 containsKey 和 containsValue 来判定某个值是否存在:
这两种方法虽然很相似,但更推荐使用 containsKey,因为 containsKey 执行效率更高,而 containsValue 执行效率较低
Map<String,String> map = new HashMap<>();
map.put("西游记","吴承恩");
map.put("红楼梦","曹雪芹");
map.put("水浒传","施耐庵");
map.put("三国演义","罗贯中");
System.out.println(map.containsKey("西游记"));
System.out.println(map.containsValue("吴承恩"));
输出结果: true
true
8.使用 foreach 遍历 Map 中的所有键值对:
Map<String,String> map = new HashMap<>();
map.put("西游记","吴承恩");
map.put("红楼梦","曹雪芹");
map.put("水浒传","施耐庵");
map.put("三国演义","罗贯中");
for (Map.Entry<String,String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
entry 表示 一个"条目",也就是一个键值对;map.entrySet 获取到所有键值对
输出结果:
由上输出结果可以看出,打印的元素顺序和插入元素顺序不同
Map 中的元素顺序和插入元素顺序无关,取决于具体的实现方式
9.使用 remove来删除键值对:
Map<String,String> map = new HashMap<>();
map.put("西游记","吴承恩");
map.put("红楼梦","曹雪芹");
map.put("水浒传","施耐庵");
map.put("三国演义","罗贯中");
map.remove("水浒传");
System.out.println("========删除水浒传========");
for (Map.Entry<String,String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
输出结果:
10.使用 clear 清空所有键值对:
Map<String,String> map = new HashMap<>();
map.put("西游记","吴承恩");
map.put("红楼梦","曹雪芹");
map.put("水浒传","施耐庵");
map.put("三国演义","罗贯中");
map.clear();
System.out.println(map.isEmpty());
输出结果:true