Map
在现实生活中有些数据是以映射关系存在的,也就是成对存在的。
双列集合:
双列集合的根接口就是Map接口。将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射到一个值。
-----------| Map 如果是实现了Map接口的集合类,具备的特点:存储的数据都是一件支队的形式存在的,键不可以重复,值可以重复。
--------------------| HashMap 底层也是基于哈希表实现的
--------------------| TreeMap
--------------------| HashTable
Map接口中的方法
增加 put(K key, V value)、putAll(Map<? extends K, ? extends V> m)
删除 remove(Object key)、clear()
获取 get(Object key)、size()
判断 containsKey(Object key)、containsValue(Object value)、isEmpty()
迭代 keySet()、values()、entrySet()
put(K key, V value) 如果之前没有存在该键,那么put方法返回的是null,如果之前就已经存在该键了,那么就返回该键之前对应的值。
putAll(Map<? extends K, ? extends V> m) 把参数集合中的元素添加到调用此方法的集合上
remove(Object key) 根据键删除一条Map里的数据,返回的是该建对应的值,如果没有该键,返回null
clear() 清空集合中的所有数据,没有返回值
get(Object key) 根据指定的键获取对应的值
size() 获取Map集合中的键值对个数
containsKey(Object key) 判断Map集合是否包含指定的键,返回true or false
containsValue(Object value) 判断Map集合是否包含指定的值,返回true or false
isEmpty() 判断Map集合是否为空元素,返回true or false
keySet() 把map集合中的所有键都保存到一个set类型的集合对象中返回,只是返回了所有的键,没有值
values() 把所有的值存储到一个Collection集合中返回
entrySet()把键值对以entry的形式存储set集合中
HashMap类的方法
HashMap的存储原理:往HashMap添加元素的时候,首先会调用键的hashCode方法得到元素的哈希码值,然后经过运算就可以算出该元素在哈希表中的存储位置。