添加微信:code_7steps,备注“进群”,邀请你加入大牛云集的技术交流群!
在编程开发过程中,经常会涉及到键值对的存取,在Java中比较具有代表性的有HashMap
和TreemMap
。
这两种Map接口的实现广泛的应用于存储键值对,支持每天在数据集上的各种操作,增、删、改、查。
本文,就来通过示例详细介绍一下TreeMap
和HashMap
之间的核心异同点。
在Java中,所有Map实现都将存储键值对,但基于实现的差异很小。与TreeMap相比,HashMap在收集框架的日常开发中得到了广泛使用。两者都使用内部存储桶概念,但是当任何存储桶分区变大时,它都会转换为TreeNode结构。
HashMap
和TreeMap
之间的相似之处
了解两个类的差异之前,首先看一下它们之间的共同点。
这两个类具有如下共同点:
-
HashMap
和TreeMap
类实现Map<K, V>
,Cloneable
,Serializable
接口,并扩展AbstractMap<K, V>
类 -
两者都基于键存储值
-
键值保证始终唯一,如果我们再次添加相同的键,则旧值将被新值替换
-
都不是不是线程安全的,因为如果在迭代过程中修改了原始Map,则会引发运行时异常
HashMap
示例
在下面的示例中,我主要实现了如下几个功能:
-
我们使用
put()
方法向HashMap
添加了几个值 -
输出
HashMap
的所有值 -
使用迭代器打印值
-
从原始
HashMap
中删除了键“0333” -
从
HashMap
中删除键会产生异常
示例代码:
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; publicclass H