黑马程序员技术交流社区
标题:
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