Map接口继承树
Map接口概述
- Map与Collection并列存在。用于保存具有映射关系的数据:key-value
- Map 中的 key 和 value 都可以是任何引用类型的数据,key-value共同构成了一个Entry对象
- Map中的entry:无序的、不可重复的,使用Set存储所有的Entry对象
- Map 中的 key 用Set集合来存放,不允许重复,即key所在的类要重写equals()和hashCode() (以HashMap为例)
- 常用String类作为Map的“键”
- key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value
常用方法
添加、删除、修改操作
Object put(Object key,Object value)
:将指定key-value添加到(或修改)当前map对象中void putAll(Map m)
:将m中的所有key-value对存放到当前map中Object remove(Object key)
:移除指定key的key-value对,并返回value void clear()
:清空当前map中的所有数据
元素查询的操作
Object get(Object key)
:获取指定key对应的value,如果不包含该键的映射,则为nullboolean containsKey(Object key)
:是否包含指定的keyboolean containsValue(Object value)
:是否包含指定的value int size()
:返回map中key-value对的个数 boolean isEmpty()
:判断当前map是否为空boolean equals(Object obj)
:判断当前map和参数对象obj是否相等
元视图操作的方法
Set keySet()
:返回所有key构成的Set集合 Collection values()
:返回所有value构成的Collection集合Set entrySet()
:返回所有key-value对构成的Set集合
public void test(){
Map map = new HashMap();
map.put("AA",123);
map.put(45,1234);
map.put("BB",56);
//遍历所有的key集:keySet()
Set set = map.keySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//遍历所有的value集:values()
Collection values = map.values();
for(Object obj : values){
System.out.println(obj);
}
//遍历所有的key-value
//方式一:entrySet()
Set entrySet = map.entrySet();
Iterator iterator1 = entrySet.iterator();
while (iterator1.hasNext()){
//obj接收的是entrySet集合中的元素:entry(一对键值对)
Object obj = iterator1.next();
//强转目的:调用entry重特有的getkey和getvalue方法
Map.Entry entry = (Map.Entry) obj;
System.out.println(entry.getKey() + "---->" + entry.getValue());
}
//方式二:
Set keySet = map.keySet();
Iterator iterator2 = keySet.iterator();
while(iterator2.hasNext()){
Object key = iterator2.next();
//通过get方法回去value值
Object value = map.get(key);
System.out.println(key + "=====" + value);
}
}