java.util.Map<K,V>
常用实现类有
HashMap<K,V>
LinkedHashMap<K,V>
HashTable<K,V>
a. 基于 哈希表 的 Map接口 实现
b. 无序
c. 不同步, 多线程
d. 键、值 可为null
a. 哈希表+链表 实现
b.有序
c.继承了 HashMap
,类似 HashSet
和 LinkedHashSet
的关系
重写原因是如果不重写,会出现程序无法识别两者是同一个对象的问题,同时重写原因是为了防止出现哈希值冲突而内容不同或者内容相同哈希值不同的情况
a. 基于 哈希表 的 Map接口 实现
b. 无序
c. 同步, 单线程 ,线程安全,速度 慢
d. 键、值 不可为null
e. 因和 Vector
一样 单线程
故 速度慢
被取代
f. 其子类 Properties
因是唯一和 IO流
相结合的集合而存在
put(K key,V value)
,返回 value
如果key已经存在,会用新的 value
替换原来的 value
get(Object key)
,返回 value
ContainsKey(Object key)
,返回 boolean
ContainsValue(Object value)
,返回 boolean
keySet()
,返回 映射中包含键的Set视图
把 Key
全取出放入 Set
中
,之后如果遍历 Set
通过 get(key)
方法可以完成遍历 Map
集合( 键找值
的方式)
entrySet()
,返回 映射中包含映射关系的Set视图
Map.Entry<K,V>
: Map接口
中的内部接口
作用是:
当Map集合一创建,就会在Map集合中创建一个Entry对象,用来记录 键 与 值 及 两者映射关系
把 map
对象中的多个 Entry
对象取出,放入 Set
集合中,之后通过 Entry
对象的 getKey()
和 getValue()
遍历集合
Set<Map.Entry<String,Integer>> set = map.entrySet(); 复制代码
List
接口、 Set
接口、 Map
接口增加了一个新的静态方法 of
,可以 一次性
给集合添加多个元素,但 不适于其实现类
,如 ArrayList
等,同时,集合后期 不可修改
(增加元素等),添加的元素需复合集合的特点( Set
及 Map
中不可添加重复元素)