注意:
看到array,就要想到角标。看到link,就要想到first,last。看到hash,就要想到hashCode,equals,看到tree,就要想到两个接口(Comparable和Comparator)
Map和Collection在集合框架中属并列存在。
1:Map存储的是键值对
2:Map存储元素使用put方法,Collection使用add方法
3:Map集合中没有直接取出元素的方法,而是转为Set集合,再通过迭代获取元素
4:Map集合中键要保持唯一性。
换句话说,Collection是单列集合,Map是双列集合
总结:
Map一次存入一对元素,Collection一次存一个,Map的键不能重复,保证唯一。
Map一次存入一对元素,是以键值对的形式存在。键与值存在映射关系,一定要保证键的唯一性。
Map的常用方法
1:添加
V put(K key, V value) (可以相同的key值,但是添加的value值会覆盖前面的,返回值是前一个,如果没有就返回null)
putAll(Map m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。
2:删除
remove() 删除关联对象,指定key对象
clear() 清空集合对象
3:获取
value get(key) 可以用来判断键是否存在的情况。当指定的键不存在的时候,返回的是null
4:判断
boolean isEmpty() 长度为0返回true否则false
boolean containsKey(Object key)判断集合中是否包含指定的key
boolean containsValue(Object value) 判断集合中是否包含指定的value
5:长度
int size()
6:获取功能
获取功能
Set<Map.Entry<K,V>>
entrySet():
V get(Object key):根据键获取值
Set<K>
keySet():获取集合中所有键的集合
Collection<V>
values():获取集合中所有值的集合
示例:
public class MapDemo {
public static void main(String[] args) {
// 创建集合对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
// V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲
// System.out.println("put:" + map.put("文章", "马伊俐"));
// System.out.println("put:" + map.put("文章", "姚笛"));
map.put("邓超", "孙俪");
map.put("黄晓明", "杨颖");
map.put("周杰伦", "蔡依林");
map.put("刘恺威", "杨幂");
// void clear():移除所有的键值对元素
// map.clear();
// V remove(Object key):根据键删除键值对元素,并把值返回
// System.out.println("remove:" + map.remove("黄晓明"));
// System.out.println("remove:" + map.remove("黄晓波"));
// boolean containsKey(Object key):判断集合是否包含指定的键
// System.out.println("containsKey:" + map.containsKey("黄晓明"));
// System.out.println("containsKey:" + map.containsKey("黄晓波"));
// boolean isEmpty():判断集合是否为空
// System.out.println("isEmpty:"+map.isEmpty());
//int size():返回集合中的键值对的对数
System.out.println("size:"+map.size());
// 输出集合名称
System.out.println("map:" + map);
}
}
注意:Map没有迭代器,所以想取出map中的所有元素必须通过keySet()方法获取map中所有的键所在的set集合,再通过set的迭代器获取每一个键,再对每一个键通过map集合的get()方法获取其对应的值即可。
Map集合:keySet()方法
之前讲Mpa集合时,Map集合是用来存储一对key-value两个对象,既然存储的是两个对象,那么能不能只获取其中一个所有对象?
可以。Map集合属于双列集合,里面有两个单列集合。
问题:Map中的key对象,Map应该使用哪个集合存储?
key必须保证唯一性(不能重复),使用Set集合存储。
Map中的keySet方法:获取Map集合中所有的key对象
Map集合:entrySet()方法
Map集合中存储的是一对key-value的映射关系(对应关系 、键值关系)
映射关系:key-value对应关系。
映射关系在底层代码上怎么体现:Map.Entry来存储key-value映射关系
Map集合的entrySet方法:获取Map集合中所有的key-value映射关系
映射关系类型:Map.Entry
map集合:values()方法
之前使用keySet方法可以获取 Map集合中的的所有key对象,而values方法就是获取Map集合中的的所有value对象
Map集合的values对象:获取集合中所有的value