在编程开发过程中,经常会涉及到键值对的存取,在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