【无标题】JAVA学习-集合.使用TreeMap

       TreeMap 是 Java 中的一种有序映射(SortedMap)实现,它根据键的自然顺序进行排序,或者根据自定义的 Comparator 进行排序。TreeMap 的底层实现是红黑树(Red-Black Tree),这使得它的插入、删除和搜索操作的时间复杂度为 O(log n)。

一、特点:

1. TreeMap是有序的,根据键的顺序进行排序,默认是按照键的自然顺序进行排序,也可以使用自定义的Comparator来进行排序。
2. TreeMap不允许键为null,但允许值为null。
3. TreeMap是非同步的,不是线程安全的。

二、使用方法:

1. 创建TreeMap对象:

可以使用无参构造方法创建一个空的TreeMap,或者使用带有Comparator参数的构造方法创建一个具有自定义排序方式的TreeMap。

2. 添加键值对:

使用put(key, value)方法将键值对添加到TreeMap中,如果键已经存在,则会覆盖原来的值。

3. 获取值:

使用get(key)方法根据键获取对应的值。

4. 遍历:

使用entrySet()方法获取键值对的集合,然后使用foreach循环或迭代器遍历集合中的元素。

5. 删除键值对:

使用remove(key)方法根据键删除对应的键值对。

6. 其他常用方法:

例如size()获取元素的个数,containsKey(key)检查键是否存在,isEmpty()检查是否为空等。

下面是一个示例代码,展示了如何使用TreeMap:

 

import java.util.Comparator;
import java.util.TreeMap;
public class TreeMapExample {public static void main(String[] args) {// 创建TreeMap对象TreeMap<Integer, String> treeMap = new TreeMap<>();        // 添加键值对treeMap.put(3, "Three");treeMap.put(1, "One");treeMap.put(2, "Two");// 获取值String value = treeMap.get(2);System.out.println("Value for key 2: " + value);        // 遍历for (var entry : treeMap.entrySet()) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());}        // 删除键值对treeMap.remove(1);        // 判断是否包含键boolean containsKey = treeMap.containsKey(3);System.out.println("Contains key 3: " + containsKey);        // 获取元素个数int size = treeMap.size();System.out.println("Size of TreeMap: " + size);// 使用自定义排序方式的TreeMapTreeMap<String, Integer> customTreeMap = new TreeMap<>(Comparator.reverseOrder());customTreeMap.put("Three", 3);customTreeMap.put("One", 1);customTreeMap.put("Two", 2);        // 遍历自定义排序方式的TreeMapfor (var entry : customTreeMap.entrySet()) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());}}
}

       在上述示例中,首先创建了一个TreeMap对象,并通过put方法添加了几个键值对。接着使用get方法获取键为2的值,并使用entrySet方法获取键值对的集合进行遍历。随后使用remove方法删除了键为1的键值对,并使用containsKey方法判断是否包含键为3的键值对。最后使用size方法获取元素个数并输出。另外,也展示了使用自定义排序方式的TreeMap的示例。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核内存管理-动态内存

目录 一、动态内存运行机制二、动态内存开发流程三、动态内存使用说明四、动态内存核心算法五、动态内存接口六、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、动态内存运行机制 动态内存管理&#xff0c;即在内存资源充足的情况下&#xff0c;根据用户需求&…

如何在 Angular 中使用 ng2-charts 来使用 Chart.js

介绍 Chart.js 是一个流行的 JavaScript 图表库&#xff0c;ng2-charts 是 Angular 2 的一个包装器&#xff0c;用于在 Angular 中集成 Chart.js。 在本教程中&#xff0c;您将使用 Chart.js 和 ng2-charts 在 Angular 应用程序中创建示例图表。 先决条件 要完成本教程&…

【解决(几乎)任何机器学习问题】:超参数优化篇(超详细)

这篇文章相当长&#xff0c;您可以添加至收藏夹&#xff0c;以便在后续有空时候悠闲地阅读。 有了优秀的模型&#xff0c;就有了优化超参数以获得最佳得分模型的难题。那么&#xff0c;什么是超参数优化呢&#xff1f;假设您的机器学习项⽬有⼀个简单的流程。有⼀个数据集&…

【Rust】使用Rust实现一个简单的shell

一、Rust Rust是一门系统编程语言&#xff0c;由Mozilla开发并开源&#xff0c;专注于安全、速度和并发性。它的主要目标是解决传统系统编程语言&#xff08;如C和C&#xff09;中常见的内存安全和并发问题&#xff0c;同时保持高性能和底层控制能力。 Rust的特点包括&#x…

python数据分析numpy基础之sum用法和示例

1 python数据分析numpy基础之sum用法和示例 python的numpy库的sum()函数&#xff0c;用于对数组指定轴的元素求和。 用法 numpy.sum(a, axisNone, dtypeNone, outNone, keepdims<no value>, initial<no value>, where<no value>)描述 入参a可以为数组或类…

java8-使用流-2

筛选各异的元素 流还支持一个叫作aistinct的方法&#xff0c;它会返回一个元素各异(根据流所生成元素的hashcode和eguals方法实现)的流。例如&#xff0c;以下代码会筛选出列表中所有的偶数&#xff0c;并确保没有重复。图5-2直观地显示了这个过程。 List<Integer>number…

Panalog 日志审计系统 sessiptbl.php 前台RCE漏洞复现

0x01 产品简介 Panalog是一款日志审计系统,方便用户统一集中监控、管理在网的海量设备。 0x02 漏洞概述 Panalog日志审计系统 sessiptbl.php接口处存在远程命令执行漏洞,攻击者可执行任意命令,接管服务器权限。 0x03 影响范围 version <= MARS r10p1Free 0x04 复现…

勒索病毒最新变种.faust勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 随着我们进入数字化时代&#xff0c;数据的重要性变得愈发显著&#xff0c;而网络安全威胁也日益增加。.faust勒索病毒是其中一种备受恶意分子钟爱的危险工具&#xff0c;它通过加密用户文件并勒索高额赎金来对个人和组织发起攻击。本文将深入探讨.faust勒索…

thinkphp+vue企业产品展示网站f7enu

本文首先介绍了企业产品展示网站管理技术的发展背景与发展现状&#xff0c;然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;根据需求分析制定模块并设计数据库结构&#xff0c;再根据系统总体功能模块的设计绘制系统的功能模块图&#…

紫微斗数双星组合:廉贞破军在卯酉

文章目录 前言内容总结 前言 紫微斗数双星组合&#xff1a;廉贞破军在卯酉 内容 紫微斗数双星组合&#xff1a;廉贞破军在卯酉 性格分析 廉贞星、破军星二星同宫&#xff0c;具有冒险开创的精神和领导能力&#xff0c;忍耐力强&#xff0c;工作积极稳重&#xff0c;冲劲大&a…

FreeSWITCH在session上执行定时挂机与取消

一、实验场景环境描述 FreeSWITCH测试机&#xff1a;192.168.137.32 会议室&#xff1a; test1 分机&#xff1a; 1000 模拟的场景&#xff1a; 1&#xff09;会议室test1邀请分机1000加入会议室 在邀请时&#xff0c;添加定时挂机任务。 2&#xff09;分机1000接通后&#x…

【51单片机】利用STC-ISP软件工具【定时器计算器】配置【定时器】教程(详细图示)(AT89C52)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

Shell脚本——提取目录名和文件名

目录 一、${} 1.${var##*/} 2.${var##*.} 3.${var#*.} 4.${var%/*} 5.${var%%.*} 6.总结 二、basename和dirname 1.basename 2.dirname 在许多场景下&#xff0c;我们都需要对文件名称或者文件所在的目录进行操作&#xff0c;已达到我们业务目的。通常的操作是由路径…

Python入门知识点分享——(二十一)多继承和运算符重载

在介绍新的知识之前&#xff0c;我们先对之前的内容做一点补充&#xff0c;在面向对象编程的过程中&#xff0c;一个对象常常被要求具备多方面的功能&#xff0c;从而和多个类产生联系&#xff0c;而这一步的实现就用到了“多继承”。多继承是指一个子类可以继承自多个父类&…

QGIS教程 加载shape数据 矢量数据(批量)

一. 前言 本篇文章主要介绍QGIS的使用&#xff0c;包括如何加载矢量shape数据、查看数据属性、如何加载txt属性数据、怎么用脚本批量加载矢量数据等内容。 如果想了解QGIS&#xff0c;可以参考博文&#xff1a; QGIS基本介绍 如果想了解shape数据格式详情&#xff0c;可以参考…

CVE-2023-41892 漏洞复现

CVE-2023-41892 开题&#xff0c;是一个RCE Thanks for installing Craft CMS! You’re looking at the index.twig template file located in your templates/ folder. Once you’re ready to start building out your site’s front end, you can replace this with someth…

leetcode刷题--贪心算法

七. 贪心算法 文章目录 七. 贪心算法1. 605 种花问题2. 121 买卖股票的最佳时机3. 561 数组拆分4. 455 分发饼干5. 575 分糖果6. 135 分发糖果7. 409 最长回文串8. 621 任务调度器9. 179 最大数10. 56 合并区间11. 57 插入区间13. 452 用最少数量的箭引爆气球14. 435 无重叠区间…

设备驱动开发_1

可加载模块如何工作的 主要内容 描述可加载模块优势使用模块命令效率使用和定义模块密钥和模块工作1 描述可加载模块优势 开发周期优势: 静态模块在/boot下的vmlinuz中,需要配置、编译、重启。 开发周期长。 LKM 不需要重启。 开发周期优于静态模块。 2 使用模块命令效率…

【AIGC】Stable Diffusion的ControlNet插件

ControlNet 介绍 ControlNet 插件是 Stable Diffusion 中的一个重要组件&#xff0c;用于提供对模型的控制和调整。以下是 ControlNet 插件的主要特点和功能&#xff1a; 模型控制&#xff1a; ControlNet 允许用户对 Stable Diffusion 中的模型进行精细的控制和调整。用户可以…

应急响应实战笔记01入侵排查篇(2)

第2篇&#xff1a;Linux 入侵排查 0x00 前言 当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时&#xff0c;急需第一时间进行处理&#xff0c;使企业的网络信息系统在最短时间内恢复正常工作&#xff0c;进一步查找入侵来源&#xff0c;还原入侵事故过程&…