一文掌握Java TreeMap与HashMap

在编程开发过程中,经常会涉及到键值对的存取,在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
HashMapJava中是一种非常实用的工具,它能够清楚地反映“键-值”之间的关系。HashMap本身是无序的,但是在实际应用中,我们可能需要对HashMap进行排序。有两种常见的方式可以对HashMap进行排序。 第一种方式是使用TreeMapTreeMap是继承自SortedMap的,它会根据键的自然顺序或者自定义的比较器对键进行排序。通过将HashMap的键值对移到TreeMap中,我们可以实现对HashMap的排序操作。 第二种方式是通过将HashMap的键值对换成List,并使用Collections.sort方法对List进行排序。我们可以使用以下代码将HashMap换为List:List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); 然后使用Collections.sort方法对List进行排序。 这两种方式都可以对HashMap进行排序,具体选择哪种方式取决于具体的需求和场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [HashMap的排序](https://blog.youkuaiyun.com/weixin_32002013/article/details/115064752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [一文让你彻底理解JavaHashMap和ConcurrentHashMap](https://download.youkuaiyun.com/download/weixin_38650951/15452438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值