来源:尚硅谷:http://www.gulixueyuan.com/my/course/310
Map接口概述
- Map与Collection并列存在。用于保存具有映射关系的数据:key-value
- Map 中的 key 和 value 都可以是任何引用类型的数据
- Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应 的类,须重写hashCode()和equals()方法
- 常用String类作为Map的“键”
- key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到 唯一的、确定的 value
- Map接口的常用实现类:HashMap、TreeMap、LinkedHashMap和 Properties。其中,HashMap是 Map 接口使用频率最高的实现类
Map接口:常用方法
添加、删除、修改操作:
- 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中的所有数据
// 添加、删除、修改操作
@Test
public void test1(){
Map map = new HashMap();
//添加
map.put("AA",123);
map.put(45,123);
map.put("BB",56);
//修改
map.put("AA",87);
System.out.println("Map集合中的元素为:"+map);
Map map1 = new HashMap();
map1.put("CC",123);
map1.put("DD",123);
map.putAll(map1);
System.out.println("Map集合中的元素为:"+map);
//remove(Object key):移除指定key的key-value对,并返回value
Object value = map.remove("CC");
System.out.println("调用remove()方法移除key为“CC”的键值对,返回它的值:"+value);
System.out.println("调用remove()后的map集合:"+map);
//clear():清空当前map中的所有数据
map.clear();
System.out.println("map.size:"+map.size());
System.out.println("调用clear()后的map集合元素:"+map);
}
Map集合中的元素为:{AA=87, BB=56, 45=123}
Map集合中的元素为:{AA=87, BB=56, CC=123, DD=123, 45=123}
调用remove()方法移除key为“CC”的键值对,返回它的值:123
调用remove()后的map集合:{AA=87, BB=56, DD=123, 45=123}
map.size:0
调用clear()后的map集合元素:{}
元素查询的操作:
- Object get(Object key):获取指定key对应的value
- boolean containsKey(Object key):是否包含指定的key
- boolean containsValue(Object value):是否包含指定的value
- int size():返回map中key-value对的个数
- boolean isEmpty():判断当前map是否为空
- boolean equals(Object obj):判断当前map和参数对象obj是否相等
// 元素查询的操作:
@Test
public void test2(){
Map map = new HashMap();
map.put("AA",123);
map.put(45,123);
map.put("BB",56);
//Object get(Object key):获取指定key对应的value
System.out.println(map.get(45));
//boolean containsKey(Object key):是否包含指定的key
boolean isExist = map.containsKey("BB");
System.out.println(isExist);
//boolean containsValue(Object value):是否包含指定的value
isExist = map.containsValue(123);
System.out.println(isExist);
map.clear();
//boolean isEmpty():判断当前map是否为空
System.out.println(map.isEmpty());
}
123
true
true
true
元视图操作的方法:
- Set keySet():返回所有key构成的Set集合
- Collection values():返回所有value构成的Collection集合
- Set entrySet():返回所有key-value对构成的Set集
@Test
public void test3(){
Map map = new HashMap();
map.put("AA",123);
map.put(45,1234);
map.put("BB",56);
//keySet():返回所有key构成的Set集合
Set keySet = map.keySet();
//使用迭代器遍历set集合的key
Iterator iterator = keySet.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
System.out.println("------------------------------------");
Collection values = map.values();
//使用增强for循环遍历values
for (Object obj : values){
System.out.println(obj);
}
System.out.println("------------------------------------");
//entrySet():返回所有key-value对构成的Set集合
//遍历所有的key-value
//方式一:entrySet()
Set entrySet = map.entrySet();
Iterator iterator1 = entrySet.iterator();
while (iterator1.hasNext()){
Object object = iterator1.next();
//entrySet集合中的元素都是entry
Map.Entry entry = (Map.Entry) object;
System.out.println(entry.getKey() + "---->" + entry.getValue());
}
System.out.println("------------------------------------");
//方式二:
Set keySet1 = map.keySet();
Iterator iterator2 = keySet1.iterator();
while (iterator2.hasNext()){
Object key = iterator2.next();
Object value = map.get(key);
System.out.println(key + "===" + value);
}
}
AA
BB
45
------------------------------------
123
56
1234
------------------------------------
AA---->123
BB---->56
45---->1234
------------------------------------
AA===123
BB===56
45===1234
总结:Map的常用方法
- 添加:put(Object key,Object value)
- 删除:remove(Object key)
- 修改:put(Object key,Object value)
- 查询:get(Object key)
- 长度:size()
- 遍历:keySet() / values() / entrySet()