特点
1、用于保存具有映射关系的数据 key-value(双列元素)。
2、key和value可以是任何引用数据类型。
3、Map中的key不可以重复。当有相同的key时,就等价于替换。
4、Map中的value是可以重复的。
5、Map中的key和value都可以为空。但key只能有一个空,而value可以有多个空。
6、通常String类作为Map的key。
7、key和value是一一对应关系,通过key总能找到对应的value。
8、一对key-value是放在一个Node中的,Node实现了Entry接口。
Map接口方法
import java.util.HashMap;
public class Map_01 {
public static void main(String[] args) {
HashMap hashMap = new HashMap();
//添加 put(key,value) putAll(Map)
hashMap.put("num1","Mary");
hashMap.put("num2","Tom");
hashMap.put("num3","Jack");
System.out.println(hashMap);
//通过key获取value
System.out.println(hashMap.get("num2"));
hashMap.remove("num3");
System.out.println(hashMap.size());
System.out.println(hashMap.isEmpty());
System.out.println(hashMap.containsKey("num1"));
System.out.println(hashMap.containsValue("Jack"));
}
}
{num1=Mary, num3=Jack, num2=Tom}
Tom
2
false
true
false
Process finished with exit code 0
遍历
1)keySet:获取所有的键
2)entrySet:获取所有关系
3)values:获取所有的值
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Map_02 {
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("num1","Mary");
map.put("num2","Tom");
map.put("num3","Jack");
map.put("num4","Amy");
//先取出所有的key
Set keys = map.keySet();//keys为set,有两种方法迭代。
for (Object obj:keys){
System.out.println(obj+":"+map.get(obj));
}
//取出所有的values
Collection values = map.values();//Collection有2种迭代方式
for (Object obj:values){
System.out.println(obj);
}
//通过entrySet获取所有的k-v
Set entrySet = map.entrySet();
System.out.println(entrySet);
for (Object entry:entrySet){
//将entry转成Map.Entry
Map.Entry m =(Map.Entry) entry;
System.out.println(m.getKey()+":"+m.getValue());
}
}
}
num1:Mary
num4:Amy
num3:Jack
num2:Tom
Mary
Amy
Jack
Tom
[num1=Mary, num4=Amy, num3=Jack, num2=Tom]
num1:Mary
num4:Amy
num3:Jack
num2:Tom
Process finished with exit code 0