黑马程序员技术交流社区

标题: Map总结 [打印本页]

作者: 小青年oh    时间: 2016-3-29 23:07
标题: Map总结

Map

        1. Map和 Collection 的区别
                Map 键值对的集合(双列集合)
                        -- HashMap
                        -- TreeMap
                Collection 单列集合
                        -- Arraylist
                        -- LinkedList
                        -- Vector
                       
        2.         Map 功能
       
                增删改查: CURD
                       
                        map 包括 HashMap 和 TreeMap  . 底层数据结构是对键有效的.
               
                        1.添加:
                                V put(K key, V value)
                                        -- 键不重复, 添加成功,返回null
                                        -- 键重复, 替换原来的值,返回被替换的值
                        2.删除
                                clear() -- 清空
                                V remove(Object key)  -- 根据key来删除键值对, 返回值被删除的值.
                        3.判断
                                boolean isEmpty() - - 判断是否是空Map
                                boolean containsKey(Object key) -- 判断是否包含指定的键
                       
                        4.长度
                                int size() -- 返回Map的长度
                       
                        5. 获取
                                获取键的集合 -- Set<K> keySet()
                                获取值的集合 -- Collection<V> values()
                       
                       
                        Map遍历方式一:
                                1. 获取键的集合  --  Set<K> keySet()
                                2. 遍历键的集合Set -- 两种方式:增强for 和 迭代器
                                3. 通过键找对应的值 -- V get(K key)
               
                        Map的遍历方式二:
                                1.通过map获取到 键值对 集合. --  Set<Map.Entry<K,V>> entrySet()
                                2.遍历这个键值对的Set集合 -- 两种方式:增强for 和 迭代器
                                3.通过键值对集合里的每一个元素 Map.Entry<K,V> 获取键  和  值
                                                                                                getKey()
                                                                                                getValue()
                               
                3. HashMap 存储自定义元素 去除重复
                                HashSet  是封装 HashMap  ,通过 HashMap的键实现的.
                                那么, 咱们把自定义对象扔进HashMap的键 不就完了吗? 剩下的问题  跟HashSet 去除重复元素没区别了.
                                那就是 重写 自定义对象的 hashCode() 和 equals()
                               
                4.TreeMap
                                TreeSet 通过封装TreeMap  通过map的键实现的
                               
                                那 你知道了 TreeSet保证元素唯一 和 排序的特点  那  TreeMap的 键有什么特点还用说吗
                               
                                需求:TreeMap集合存储学生对象,并且想去除其中的重复元素..
                                        那扔到TreeMap 的键不就完了 剩下的就是跟TreeSet 的一样了
               
                5. HashMap 和 Hashtable的区别
                        HashMap 是 线程不安全,效率高, 允许null键 和 null 值
                        Hashtable 线程安全(同步) ,效率低,不允许null键和 null值.
               
                               
                6.需求:有一个字符串:  "cbxzbvavdvgd"  要求获取字符串中,每一个字母出现次数:"a(1)b(2)c(1)d(2)g(1)v(3)x(1)z(1)"
                        简单思路:
                                拿到字符串中的每个字符,当做TreeMap的键 ,去找相应的值,如果能找到,值+1,再保存到TreeMap.如果没有,直接put(Character , 1)
                               
                               
                               
                               
                               
                               
                               
                       
               

               

       






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