# Java集合之Map **Repository Path**: fpfgitmy_admin/java-collection-map ## Basic Information - **Project Name**: Java集合之Map - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-04-28 - **Last Updated**: 2021-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### Map接口 + Map接口继承树 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0428/141130_eb663b39_1942182.png "屏幕截图.png") + HashMap:作为Map的主要实现类,线程不安全,效率高,可以存储null的key和value,如果涉及到线程安全使用`Collections.synchronizedMap()`方法,使其线程安全 + LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素,对于频繁的遍历操作,此类执行效率高于HashMap + TreeMap:保证按照添加的key-value进行排序,实现排序遍历,此时考虑key的自然排序或定制排序。底层使用红黑树 + Hashtable:jdk1.0出现,线程安全,效率低,不能存储null的key和value + Properties: 常用来处理配置文件,key和value都是String类型 + HashMap的底层:数组+链表(jdk7及之前),数组+链表+红黑树(jdk8) + 面试题: 1. HashMap的底层实现原理? 2. HashMap和Hashtable的异同? 3. CurrentHashMap与Hashtable的异同? #### Map中存储的key-value的特点 + Map中的key:无序的、不可重复的,使用Set存储所有的key,--->key所在的类要重写equals()和hashCode()方法 + Map中的value:无序的、可重复的,使用Collection存储所有的value--->value所在的类要重写equals() + 一个键值对:key-value构成了一个Entry对象 + Map中的entry:无序的、不可重复的,使用Set存储所有的entry