广州网站建设公,外贸soho网站制作,万州房产网站建设,电子商务网站制作1.什么是Map
Java里的Map接口是一个集合根接口#xff0c;表示一个 键值对#xff08;Key-Value#xff09; 的映射。
简单来说就是键和值是一对的#xff0c;每一个 Key都有唯一确定的 Value对应。
其中要求 键#xff08;Key#xff09; 唯一#xff0c;因为是按照…1.什么是Map
Java里的Map接口是一个集合根接口表示一个 键值对Key-Value 的映射。
简单来说就是键和值是一对的每一个 Key都有唯一确定的 Value对应。
其中要求 键Key 唯一因为是按照Key去找Value的如果Key重复就找不到应该是对应的哪一个Value。 举一个简单的例子就是每一个学号对应一位学生那学号与学生姓名就是一对键值对学号为键学生为值学号不能重复学生姓名可以重复。 因此Map最重要的特性就是去重Set底层使用的就是Map集合。
2.Java中的Map
Java中的Map集合是和Collection接口同一等级的集合根接口。
2.1 Java中的Map接口 可以从 Keyset, Values, Entry三个角度来分析Java中的Map接口。
2.1.1 Keyset
KeySet 是一个 Map 中键key的集合以 Set 的形式保存不允许重复因此键存储的对象需要重写 equals() 和 hashCode() 方法。
在上图就是保存 AA, BB, CC, DD… 等键的集合也就是左边的那一列。
可以通过 Map.keySet() 方法获得。
2.1.2 Values
Values 是一个 Map 中值 (value) 的集合以 Collection 的形式保存因此可以重复。
在上图就是保存 90,90,56,78… 等值的集合也就是右边那一列。
通过 Map.values() 方法获得。
2.1.3 Entry
Entry 是 Map 接口中的静态内部接口表示一个键值对的映射例如上图中 AA-90 这一组映射关系。 Entry 具有上图中的方法
getKey() , 获取这组映射中的键 keygetValue() , 获取这组映射中的值 valuesetValue() ,修改这组映射中的值hashCode() , 返回这个 Entry 的哈希值equals() , 对比 key-value 是否相等
通过 Map.entrySet() 方法获得的是一组 Entry 的集合保存在 Set 中所以 Map 中的 Entry 也不能重复。 public SetMap.EntryK,V entrySet(); 3.Map 的实现类 Map 的实现类主要有 4 种
Hashtable 古老线程安全 HashMap 速度很快但没有顺序 TreeMap 有序的效率比 HashMap 低 LinkedHashMap 结合 HashMap 和 TreeMap 的有点有序的同时效率也不错仅比 HashMap 慢一点
其中后三个的区别很类似 Set 的实现类
HashSetTreeSetLinkedHashSet Map 的每个实现类都应该实现 2 个构造方法
无参构造方法用于创建一个空的 map参数是 Map 的构造方法用于创建一个包含参数内容的新 map
第二种构造方法允许我们复制一个 map。
虽然没有强制要求但自定义 Map 实现类时最好都这样来。
参考链接
Java 集合深入理解14Map 概述
【Java】Map介绍和使用
Java 集合(4)——Map 用法详解