HashMap是一种常用的数据结构,用于存储键值对(key-value pairs),其中键(key)是唯一的。 HashMap提供了多种方法用于添加、删除、遍历和查询键值对。
一、添加方法
-
put方法,可以单次向HashMap中添加一个键值对。注意:添加到Map中的数据,与List不一样,是没有顺序的。顺序是根据哈希算法得出的,不用深究。
putAll(Map<K,V>)
:将一个HashMap集合对象中的所有键值对整体加入到另一个HashMap对象中。如果两个集合中存在相同的键,则新值会覆盖旧值。
二、删除方法
- remove方法,可以单次删除一个元素。注意:删除不存在的元素,不会报错。
三、遍历方法
entrySet()
:返回一个包含所有键值对的集合(Set),每个元素都是一个Map.Entry对象,可以通过getKey()
和getValue()
方法获取键和值。keySet()
:返回所有键的集合(Set),可以用于遍历所有键。
四、查询方法
get(Object key)
:根据键获取对应的值。如果HashMap中不存在该键,则返回null。
总结
HashMap的内部实现基于哈希表,通过计算键的hashCode来决定键值对的存储位置。当发生哈希冲突时(即两个或多个键计算出的hashCode相同),HashMap使用链表或红黑树(在Java 8及以后版本中)来存储这些键值对,以解决冲突。这种设计使得HashMap在插入、删除和查找操作上都能提供较好的性能。
HashMap不保证元素的顺序,即元素的存储顺序与插入顺序无关,而是根据键的hashCode计算出的哈希值来决定的。此外,HashMap允许使用null作为键和值,并且不是线程安全的,因此在多线程环境下使用时需要额外的同步措施。