Map 是双列集合,存的是键值对(最大优点就是体现对应关系),键(key)是唯一的,值(value)可以重复. Map的功能 A:增加功能 V Put(k key, v value) 返回的值是根据键找到的. 当key在集合中不存在时,返回null,然后添加元素; 当key在集合中存在的时候,替换元素(把替换前的值返回给你)。 B:删除功能 Void clear(): 清除所有键值对数据(一般不建议) Remove(key k) 根据指定的键删除键值对,返回删除的值,如果键不存在返回null C:判断功能 Boolean containsKey(Object ky) 判断指定的键是否在集合中存在 Boolean containsValue( Object value )判断指定的值是否在集合中存在。 Boolean isEmpty() 判断集合是否为空。 D:获取功能 Set<Map.Entry<K,V>> entrySet() 键值对对象的集合。 Object get( Object key ): 根据键获取值。 Set<K> keySet(): 所有键的集合 Collection<V> values() 所有值的集合(因为值可以重复,可以是list,可以是 set)。 E:长度功能 int size() file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps86BD.tmp.jpg Map的两种遍历方式(必须掌握) 遍历方式一:通过丈夫找妻子(先拿到键的集合,然后遍历键的集合拿到值,这样就是遍历 了map) a:把所有丈夫给集合起来。Set<K> ketSet() b:遍历丈夫集合,获取到每一个丈夫。增强for , 迭代器 c:让丈夫去找妻子。get(Object key) // 创建集合对象 Map<String, String> map = new HashMap<String, String>(); // 往集合里边添加元素 map.put("郭靖", "黄蓉"); map.put("杨过", "小龙女"); map.put("牛郎", "侄女"); map.put("萧炎", "萧薰儿"); // 方式1 遍历,"丈夫找妻子" // 1)得到所有的丈夫对象(Set<k> keySet()) Set<String> husbandSet = map.keySet(); //2)遍历丈夫集合,获取到每一个丈夫。迭代器,增强for // 用迭代器的方式来做 Iterator it = husbandSet.iterator(); while(it.hasNext()) { String husband = (String)it.next(); String wife = map.get(husband); System.out.println(husband +"-----"+ wife); } // 用增强for来做 for (String s : husbandSet) { //3) 根据“丈夫”找到“妻子”--根据键获取值 String wife = map.get(s); System.out.println(s + "******" + wife); } 遍历方式二: Map.entry()在内存中其实拿到的是键和值整体对象的地址值. a:获取所有结婚证的集合。Set<结婚证> entrySet() b:遍历结婚证集合,获取到每一个结婚证对象。迭代器,增强for c:通过结婚证对象获取丈夫和妻子getKey()和getValue() // 创建集合对象 Map<String, String> map = new HashMap<String, String>(); // 往集合里边添加元素 map.put("郭靖", "黄蓉"); map.put("杨过", "小龙女"); map.put("牛郎", "侄女"); map.put("萧炎", "萧薰儿"); // 找到所有的“结婚证”,也就是所有的键值对 Set<Map.Entry<String, String>> set = map.entrySet(); // 方式2 遍历,这样每次遍历我都会得到一个键值对 for (Map.Entry<String, String> en : set) { // 得到键和值,然后打印 String key = en.getKey(); String value = en.getValue(); System.out.println(key + "****" + value); } 有兴趣可了解entry() 的拓展
|