框架图:

#yyds干货盘点# JAVA:Map_字符串

Map接口不是Collection接口的继承,而是跟Collection同处一级别的,Map接口用于维护键/值对(Key-Value)。描述了从不重复的键到值的映射。

#yyds干货盘点# JAVA:Map_string类_02

Map接口定义了存储“键(key)-值(value)映射对”的方法,Map中不能有重复的“键”,Map实现类中存储的“键值”映射对是通过键来唯一标识的,Map底层的“键”是使用Set来存放的,因此存入Map中的映射对的“键”对应的类必须重写hashCode()和equals()方法。

项目中,经常使用String类型作为Map的“键”。

例如:Map<String, Object>

JDK API中Map接口的实现类常用的有:HashMap、TreeMap和*Properties等。

HashMap实现类

​HashMap是基于哈希表的Map接口的实现,它是使用频率最高的一个容器,提供所有可选的映射操作,它内部对“键”用Set进行散列存放,所以根据“键”去取“值”的效率很高。

TreeMap实现类

TreeMap容器类比较特殊,TreeMap内部使用红黑树结构对“键”进行排序存放,所以存入TreeMap中的“键-值”对的“键”必须是可以“排序”的。

LinkedHashMap实现类

LinkedHashMap类是HashMap的子类,它可以依照插入的顺序来排列元素,增、删、改,效率相对较高。

Properties实现类

Properties类表示了一个持久的属性集,它可以保持在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串;Propperties继承自HashTable,也就是哈希表。

自JDK 1.2后,HashTable类已经改进为可以实现Map,所以Properties类也具有Map的特性。

但是,Properties类存放的“键-值”对都是字符串,在存取数据时不建议使用put、putAll和get这类存取元素方法,应该使用setProperty(String key, String value)方法和getProperty(String key)方法。