Map:Map接口提供了key映射到值的对象。
特点:一个映射不能包含重复的key,每个key最多只能映射到一个值。
常见方法:
1、添加功能
V put(K key,V value):
添加元素。其另一个功能?替换
第一次存储,就直接存储元素,返回null;
不是第一次存在,就用值把以前的值替换掉,返回以前的值
2、删除功能
void clear(): 移除所有的键值对元素
V remove(Object key): 根据键删除键值对元素,并把值返回
3、判断功能
boolean containsKey(Object key): 判断集合是否包含指定的键
boolean containsValue(Object value): 判断集合是否包含指定的值
boolean isEmpty(): 判断集合是否为空
4、获取功能
Set<Map.Entry<K,V>> entrySet(): 返回一个键值对的Set集合
V get(Object key): 根据键获取值
Set<K> keySet(): 获取集合中所有键的集合
Collection<V> values(): 获取集合中所有值的集合
5、长度功能
int size(): 返回集合中的键值对的对数
HashMap类:基于哈希表的Map接口的实现,存储的内容是键值对(key-value)映射。
**特点**:允许插入null键 null值,不保证映射的顺序。
LinkedHashMap类:基于哈希表和链接列表的Map接口的实现。
**特点**:底层的数据结构是链表和哈希表,元素有序,并且唯一;
有序性由链表数据结构保证,唯一性由哈希表数据结构保证。
TreeMap类:基于红黑树的Map接口的实现。
**特点**:键的数据结构是红黑树,可保证键的排序和唯一性
排序分为:自然排序、比较器排序
线程不安全、效率比较高
HashMap嵌套HashMap:
例:
public class test1 {
public static void main(String[] args) {
//普通班
// 张三 20
// 李四 22
//尖子班
// 王五 21
// 赵六 23
HashMap<String, Integer> jcMap = new HashMap<>();
jcMap.put("张三",20);