简化的集合框架图如下:
常用方法
方法名 | 描述 | 插入值 | 返回值 | 语法 |
---|---|---|---|---|
put | 添加元素 | key,value | put(key,value) | |
putAll | 添加集合 | Map集合 | putAll(Map map) | |
get | 通过key拿到元素 | key | value | get(key) |
clear | 清空集合 | clear() | ||
containsKey | 判断集合中是否有这个key | Object | boolean | containsKey(Object o) |
containsValue | 判断集合是否有这个values | Object | boolean | containsValue(Object o) |
isEmpty | 判断集合是否为空 | boolean | isEmpty() | |
size | 获取集合的长度 | int | size() | |
keySet | 返回key的set集合 | key集合 | keySet() | |
values | 返回value的Collection集合 | value集合 | values() | |
entrySet | 返回Entry的Set集合 | Entry集合 | entrySet() | |
remove | 通过key移除 | key | remove() |
总结一下
如果map的key和value存储的都是对象
key所在的集合是Set 我们一定要重写对象的 hashcode和equals 否则永远是不相等的
理解 如果对象没有重写hashcode的方法 他始终调用的是Objiect的方法 哈希值永远不会相等
判断value的时候 因为存储value是Collection 我们一定要重写对象的equals方法
不然对比就是内存地址 也永远不会相等
遍历
key是Set集合
value 是Collection集合
Enrty 是Set集合 Map.Entry
拿到Set集合可以通过增强for 或者迭代器
拿到Collection 集合也是可以通过增强for 和迭代器
拿到Entry的集合 也是可以通过增强for和迭代器
Map集合的特点 key -value的形式
其次 key是不可以重复的
key存储本质上是以Set集合存储的 我需要重写 hashcode和equals方法
value是可以重复的 也是无序的 Collection存储的
key 和vaule本质上是一个对象的两个属性
是Entry 的两个属性 Entry又是不可重复的 是以Set集合存储的