Map是双列集合的根接口,用于存储具有映射关系的数据。
根据key来区分每一项、获取对应的value,所以key不能重复。
key、value都可以是任意类型的数据。
Map提供了一个内部类Entry用来封装键值对,一个键值对就是一个Entry实例。
Map的常用方法(所有子类都可以直接使用):
void put(Object key,Object value) 添加一个键值对,如果已有相同的key,会覆盖原有的键值对
void putAll(Map map)
Object get(Object key) 获取对应的value
Object remove(Object key) 删除指定的键值对,返回value值。如果key不存在,返回null
boolean remove(Object key,Object value) 删除指定的键值对,这是java8新增的方法
int size() 键值对的数量
boolean isEmpty() 是否是空Map
void clear() 清空Map
boolean containsKey(Object key) 是否包含指定的key
boolean containsValue(Object value) 是否包含指定的值(一个或多个)
Set keySet() 获取所有key组成的Set
Collection values() 返回所有value组成的Collection
Set entrySet() 获取所有的键值对(Entry实例),组成一个Set集合
Java8新增的方法:
Object getOrDefault(Object key, Object defaultValue) 获取指定key的value,如果key不存在,返回设置的默认value(第二个参数)
Object replace(Object key,Object value) 替换原来的键值对,如果key不存在,返回null。put(Object key,Object value)是key存才就替换,key不存在会添加该键值对。
Object replace(Object key,Object oldVlue,Object newValue) 替换指定的键值对,key、value要一致才替换
Map的内部类Entry可用的方法:
Object getKey() 获取key
Object getValue() 获取value
void setValue(Object value) 设置新的value值
Map集合的实现类都重写了toString(),会以 {key1=value1,key2-value2,key3=value3,.....} 字符串的形式返回。
1 Map map=new HashMap(); 2 map.put("name","age"); 3 map.put("age",18); 4 //自动调用.toString() 5 System.out.println(map); //{name=age, age=18}