先来看下面这张图片,看一下Map,Hashtable,hashMap,TreeMap等他们之间的关系。
1、jdk8的接口特点
-
Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value。
-
Map中的Key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中。
map.put(new Object(),"小猪");//可以是对象
map.put(1,"小鸡");//可以是整形
System.out.println(map.get(1));//小鸡
System.out.println(map);//{1=小鸡, java.lang.Object@b4c966a=小猪}
-
Map中的Key不允许重复,原因和HashSet一样。
-
Map的value可以重复。
//put();添加方法
map.put("吴邪","张起灵");
map.put("吴邪","胖子");
//解释:有相同的key时,继续相当于等价替换
System.out.println(map.get("吴邪"));//胖子
-
常用String类作为Map的Key。
-
key和value之间存在单向一对一关系,即通过指定的key总能找到对应的value。
map.put("吴邪","张起灵");
map.put("小花","黑瞎子");
//通过get方法,传入key,会显示对应的value
System.out.println(map.get("吴邪"));//张起灵
System.out.println(map.get("小花"));//黑瞎子
- May的Key可以为null,value也可以为null,注意Key为null,只能有一个,value为null,可以多个。
- Map存放数据的Key-value示意图,一对K-V是放在HashMap$Node中的,有的因为Node实现Entry接口,有些书上也说一对K-V就是一个Entry.
2、常用方法
put() | 添加 |
---|---|
remove() | 根据键删除映射关系 |
get() | 根据建获取值 |
size() | 获取元素个数 |
isEmpty() | 判断个数是否为0 |
clear() | 清除 |
containKey() | 查找键是否存在 |
下面是相关代码的案例演示,
import java.util.HashMap;
import java.util.Map;
public class demo14 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("小猫","cat");
map.put("小狗","dog");
map.put("小羊","sheep");
map.put("小猪"," pig");
map.put("小狗",new appearence("",20));
System.out.println(map);//{小羊=sheep, 小猪= pig, 小狗=com.lwtstu5.practice.appearence@2f4d3709, 小猫=cat}
map.remove("小狗");
System.out.println(map);//{小羊=sheep, 小猪= pig, 小猫=cat}
Object name = map.get("小羊");
System.out.println(name);//sheep
System.out.println(map.size());//3,因为已经把小狗移出去了
System.out.println(map.isEmpty());//false,因为有三个,显然不为零
System.out.println(map.containsKey("小猪"));//true
System.out.println(map.containsValue("cat"));//true
map.clear();
System.out.println(map);//{},表示已经清空了
}
}
class appearence{
private String name;
private int weight;
public appearence(String name, int weight) {
this.name = name;
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
笔记来源于观看哔站教学视频后的,知识点总结。仅供参考。