黑马程序员技术交流社区

标题: map [打印本页]

作者: kkkkkccccc    时间: 2015-7-31 00:09
标题: map
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:让丈夫去找妻子。getObject 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() 的拓展






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2