集合Map笔记

来源:互联网 发布:pid控制算法和图解 编辑:程序博客网 时间:2024/06/05 05:36


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)














0 0
原创粉丝点击