https://blog.csdn.net/weixin_44165237/article/details/99762667 0819连接
Map
1.Map是双列集合的顶层接口
2.Map通常是指具有以键值对为元素的键值对集合
3.Map<K,V>,K是唯一的,Values是不唯一的
4.键是唯一,值有多种类型,有对象类型或者又是Map类型,啥都有
5.键可以是看做是List集合的一个索引,将map的键用List来装
用老师话介绍:
Map 是一个接口 是双列集合的顶级 Collection 是单列集合的顶级
Map:是以键值对的形式来进行存储(Key,Values);
Map map 里的键都是唯一的,不能够重复, values是可以重复,每一个键只能对应一个值(一一对应,就是映射的关系)
Map 的具体实现类有 HashMap(重点) TreeMap Hashtable(比较少)
Map.Entry<K,V> 的解释 : 也就是map 有一个内部接口的名字叫Entry
map 常规的一些方法:(添加的方法) V put(K key,V value) 通过键值对来进行添加
移除的方法: V remove(Object key) 通过键来删除键值对 (没有根据索引来移除)
判断类型的方法: boolean containsKey(Object key) 判断这个键是否存在
boolean containsValue(Object value) 判断这个值是否存在
boolean isEmpty() 是否存在元素
获取性的方法: void clear() 清除所有的元素
V get(Object key) 通过键来获取值
int size() 获取集合的长度
Collection<V> values() 获取所有的values()
Set<K> keySet() 获取map中所有的键 返回值是一个Set
修改:根据键来修改值,键必须存在 V put(K key,V value)
Map接口中定义的常用方法:
(1)void clear():删除该Map对象中所有的键值对。
(2)boolean containsKey(Object key):查询Map中是否包含指定key。
(3)boolean containsValue(Object value):查询Map中是否包含一个或多个value。
(4)Set entrySet():返回Map中所包含的键值对所组成的Set集合,每个集合元素都是Map.Entry对象。
(5)Object get(Object obj):返回指定key所对应的value。如果没有,这返回null。
(6)boolean isEmpty():查询该Map是否为空,如果为空则返回true。
(7)Set keySet():返回该Map中所有key组成的Set集合。
(8)Object put(Object key, Object
value):添加一个键值对,如果当前Map中已经有一个与该key相等的键值对,则新的键值对将覆盖原来的键值对。(9)void putAll(Map m):将指定Map中的键值对复制到m中。
(10)Object remove(Object key):删除指定key所对应的键值对,如果不存在,则返回null。
(11)int size():返回Map里的键值对个数。
(12)Collection values():返回该Map里所有的vlaue组成的Collection。
Map中包括一个内部类Entry。该类封装了一个键值对。
Entry包含的三个方法: 它表示的是一个键值对的对象
(1)Object getKey():返回该Entry里包含的key值。
(2)Object getValue():返回该Entry里包含的value值。
(3)Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值。
Collections
1.使用时注意它是until包下的工具类,是对List集合操作的工具类,不是map;
2.常用它的静态方法,对List集合操作
sort: Colletions.sort(List list),对集合进行自然升序
public static <T extends Comparable<? super T>> void sort(List<T> list)
根据元素的自然顺序 对指定列表按升序进行排序
binarySearch 二分查找搜索指定的元素,前提是已经排好序
public static <T> int binarySearch(List<? extends Comparable<? super T>> list,
T key)
frequency
public static int frequency(Collection<?> c,
Object o)
返回指定 collection 中等于指定对象的元素数
reverse 反转集合元素顺序
public static void reverse(List<?> list)
shuffle 对列表进行索引的随机置换,即元素位置交换
public static void shuffle(List<?> list)
总结
今天学习了Map的双列顶层集合,可以说是跟Collection的顶层单列集合有的一挥。
我认识到Map的键值对很有意思,它的键可以使用List集合来收集,再通过list集合的
Collections工具类对所谓的List集合进行操作,什么反转啊,打乱呀,排序呀,统统都是在List集合下的操作。我认识到操作List的索引,实质是操作map的键,同样键不是具有唯一性么,这键值所配对,自然就操作了值啦。
键值对的值可以是很复杂很复杂的类型,比如Map嵌套map,需要层层剥皮才行。