TreeMap、TreeSet和HashMap、HashSet

article/2025/7/18 14:57:02

目录

一、TreeMap&TreeSet

1.数据结构:

2.时间复杂度:

3.键/元素: 

4.TreeMap基本操作: (与 HashMap 类似,但 put, get, remove 等操作会根据键的顺序进行):

5.TreeMap遍历:

 6.TreeSet基本操作 (与 HashSet 类似,但 add, remove 等操作会根据元素的自然顺序或比较器顺序进行):

7.TreeSet遍历:

二、HashMap&HashSet

1.数据结构:

2.时间复杂度:

3.键/元素:

4.HashMap基本操作:

5.HashMap遍历:

6.HashSet基本操作:

7.HashSet遍历:

三、总结:


一、TreeMap&TreeSet

1.数据结构:

TreeMap和TreeSet是基于红黑树(平衡二叉查找树)实现

2.时间复杂度:

插入、删除和查找的时间复杂度是O(log n)

3.键/元素: 

不允许使用 null 键 (仅 TreeMap) 和 null 元素 (仅 TreeSet),因为无法比较 null 与其他元素的大小。

4.TreeMap基本操作: (与 HashMap 类似,但 putgetremove 等操作会根据键的顺序进行):

put(K key, V value): 插入键值对。
get(Object key): 根据键获取值。
remove(Object key): 根据键删除键值对。
containsKey(Object key): 判断是否包含指定的键。
containsValue(Object value): 判断是否包含指定的值。
size(): 获取键值对的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有键值对

5.TreeMap遍历:

keySet(): 返回所有键的 Set 视图 (有序)。
values(): 返回所有值的 Collection 视图 (有序)。
entrySet(): 返回所有键值对的 Set 视图 (有序)。
firstKey(): 返回当前 Map 中最小键。
lastKey(): 返回当前 Map 中最大键。 

例子如下:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class HashMapExample {public static void main(String[] args) {// 创建一个 HashMapMap<String, Integer> hashMap = new HashMap<>();// 添加一些键值对hashMap.put("apple", 1);hashMap.put("banana", 2);hashMap.put("cherry", 3);// 使用 entrySet() 遍历 HashMapSet<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();for (Map.Entry<String, Integer> entry : entrySet) {// 获取键和值String key = entry.getKey();Integer value = entry.getValue();// 打印键和值System.out.println("Key: " + key + ", Value: " + value);}}
}

 6.TreeSet基本操作 (与 HashSet 类似,但 addremove 等操作会根据元素的自然顺序或比较器顺序进行):

add(E e): 添加元素。
remove(Object o): 删除指定元素。
contains(Object o): 判断是否包含指定元素。
size(): 获取元素的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有元素。

7.TreeSet遍历:

iterator(): 返回集合的迭代器 (有序)。
forEach(Consumer<? super E> action): 对每个元素执行给定的操作 (有序)。 

二、HashMap&HashSet

1.数据结构:

基于哈希表实现 

2.时间复杂度:

插入、删除和查找的平均时间复杂度是 O(1),但在最坏情况下是 O(n) (发生哈希碰撞时)

3.键/元素:

 允许使用 null 值和 null 键 (仅 HashMap)。

4.HashMap基本操作:

put(K key, V value): 插入键值对。
get(Object key): 根据键获取值。
remove(Object key): 根据键删除键值对。
containsKey(Object key): 判断是否包含指定的键。
containsValue(Object value): 判断是否包含指定的值。
size(): 获取键值对的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有键值对。 

5.HashMap遍历:

keySet(): 返回所有键的 Set 视图。
values(): 返回所有值的 Collection 视图。
entrySet(): 返回所有键值对的 Set 视图。 

6.HashSet基本操作:

add(E e): 添加元素。
remove(Object o): 删除指定元素。
contains(Object o): 判断是否包含指定元素。
size(): 获取元素的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有元素。 

7.HashSet遍历:

iterator(): 返回集合的迭代器。
forEach(Consumer<? super E> action): 对每个元素执行给定的操作。 

三、总结:


http://www.hkcw.cn/article/lhqnZRlVje.shtml

相关文章

电工基础【2】自锁、互锁、正反转电路

04 自锁、正反转电路 我们讲一下这个自锁和正反转。 自锁电路图示例图 加了一个这个 KM1 自锁。加了 KM1 的辅助触头&#xff0c;它怎么实现呢&#xff1f;它怎么就自锁了呢&#xff1f;没加它的时候为什么是点动&#xff1f;加它为什么自锁&#xff1f; 讲解一下。首先我们…

【计算机网络】传输层UDP协议

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;计算机网络 &#x1f339;往期回顾&#x1f339;&#xff1a; 【计算机网络】应用层协议Http——构建Http服务服务器 &#x1f516;流水不争&#xff0c;争的是滔滔不…

day40python打卡

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#xff1a;仔细学习下测试和训练代码…

2022-2023-2-移动机器人设计与实践-期末B

2022-2023-2-移动机器人设计与实践-期末A-CSDN博客 本文介绍了《移动机器人设计与实践》课程期末考试试卷B卷的内容与参考答案。试卷包含分析题、设计题、实践题和编程题四部分&#xff0c;总分100分。分析题考察学生对空中、水面和地上三种移动机器人模型运动机制及应用场景的…

DM8部分函数的功能分别举例说明

DM8部分函数的功能分别举例说明 1 环境说明2 函数功能使用示例2.1 AVG OVER2.2 COUNT OVER2.3 MIN OVER&#xff0c;MAX OVER&#xff0c;SUM OVER2.4 DENSE_RANK2.5 ROW_NUMBER2.6 FIRST2.7 LAG2.8 WM_CONCAT 3 更多达梦数据库全方位指南:安装 优化 与实战教程 1 环境说明 Cp…

大语言模型 24 - MCP 自动操作 提高模型上下文能力 Cursor + Sequential Thinking Server Memory

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇&#xff1a; MyBatis 更新完毕目前开始更新 Spring&#xff0c;一起深入浅出&#xff01; 大数据篇 300&#xff1a; Hadoop&…

【多线程初阶】线程状态 线程安全

文章目录 1.线程状态线程的状态及状态转移 2.多线程带来的风险 - 线程安全(重点)线程安全问题产生的原因如何解决线程安全问题 1.线程状态 EE的第一篇总览中有提到过 进程的状态 1.就绪 2.阻塞 这都是从操作系统的视角看待的 Java线程也是对操作系统线程的封装,针对状态这里…

Python 序列的修改、散列和切 片(Vector类第4版:散列和快速等值 测试)

Vector类第4版&#xff1a;散列和快速等值测试 我们要再次实现__hash__ 方法。加上现有的__eq__ 方法&#xff0c;这会把 Vector 实例变成可散列的对象。 示例 9-8 中的__hash__ 方法简单地计算 hash(self.x) ^ hash(self.y)。这一次&#xff0c;我们要使用^&#xff08;异或…

ai姿势项目

链接:https://pan.baidu.com/s/1dGSt7wEk8w6O7zlgme3CUQ?pwd=x60y 提取码:x60y --来自百度网盘超级会员V2的分享 配置环境 conda create -n 环境名称 python=3.8conda activate 环境名称 如果你运行程序的话会报错 ModuleNotFoundError: No module named mediapipe 进…

LoRA:高效微调预训练模型的利器

LoRA(Low-Rank Adaptation) 的思想&#xff1a;冻结预训练模型权重&#xff0c;将可训练的低秩分解矩阵注入到Transformer架构的每一层(也可单独配置某一层)中&#xff0c; 从而大大减少在下游任务的可训练参数量。 核心原理 对于预训练权重矩阵 &#xff0c;LoRA限制了其更新…

越界检测算法AI智能分析网关V4打造多场景化的应用解决方案

一、方案概述 随着社会发展&#xff0c;传统安防系统在复杂环境下暴露出误报率高、响应慢等短板。AI智能分析网关V4依托先进算法与强大算力&#xff0c;实现周界区域精准监测与智能分析&#xff0c;显著提升入侵防范效能。本方案通过部署该网关及其越界检测功能&#xff0c;为…

使用SkiaSharp打造专业级12导联心电图查看器:性能与美观兼具的可视化实践

前言 欢迎关注dotnet研习社&#xff0c;今天我们研究的Google Skia图形库的.NET绑定SkiaSharp图形库。 在医疗软件开发领域&#xff0c;心电图(ECG)数据的可视化是一个既有挑战性又极其重要的任务。作为开发者&#xff0c;我们需要创建既专业又直观的界面来展示复杂的生物医学…

24位高精度数据采集卡NET8860音频振动信号采集监测满足自动化测试应用现场的多样化需求

NET8860 高分辨率数据采集卡技术解析 阿尔泰科技的NET8860是一款高性能数据采集卡&#xff0c;具备8路同步模拟输入通道和24bit分辨率&#xff0c;适用于高精度信号采集场景。其输入量程覆盖10V、5V、2V、1V&#xff0c;采样速率高达256KS/s&#xff0c;能够满足多种工业与科研…

2025年05月30日Github流行趋势

项目名称&#xff1a;agenticSeek 项目地址url&#xff1a;https://github.com/Fosowl/agenticSeek项目语言&#xff1a;Python历史star数&#xff1a;13040今日star数&#xff1a;1864项目维护者&#xff1a;Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

PCB设计实践(三十一)PCB设计中机械孔的合理设计与应用指南

一、机械孔的基本概念与分类 机械孔是PCB设计中用于实现机械固定、结构支撑、散热及电气连接的关键结构元件&#xff0c;其分类基于功能特性、制造工艺和应用场景的差异&#xff0c;主要分为以下几类&#xff1a; 1. 金属化机械孔 通过电镀工艺在孔内壁形成导电层&#xff0c;…

TC/BC/OC P2P/E2E有啥区别?-PTP协议基础概念介绍

前言 时间同步网络中的每个节点&#xff0c;都被称为时钟&#xff0c;PTP协议定义了三种基本时钟节点。本文将介绍这三种类型的时钟&#xff0c;以及gPTP在同步机制上与其他机制的区别 本系列文章将由浅入深的带你了解gPTP&#xff0c;欢迎关注 时钟类型 在PTP中我们将各节…

五.MySQL表的约束

1.not null空属性 和 default缺省值 两个值&#xff1a;null&#xff08;默认的&#xff09;和not null(不为空) 元素可以分为两类 1.not null 不能为空的&#xff0c;这种没有默认default 要手动设定&#xff0c;我们必须插入数据而且不能为NULL。但我们插入数据有两种方式 1.…

4.Haproxy搭建Web群集

一.案例分析 1.案例概述 Haproxy是目前比较流行的一种群集调度工具&#xff0c;同类群集调度工具有很多&#xff0c;包括LVS、Nginx&#xff0c;LVS性能最好&#xff0c;但是搭建相对复杂&#xff1b;Nginx的upstream模块支持群集功能&#xff0c;但是对群集节点健康检查功能…

NewsNow:免费好用的实时新闻聚合平台,让信息获取更优雅(深度解析、部署攻略)

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、NewsNow项目概览1. 项目核心亮点2. 技术架构特点 二、核心功能深度解析1. 智能新…

论文阅读笔记——FLOW MATCHING FOR GENERATIVE MODELING

Flow Matching 论文 扩散模型&#xff1a;根据中心极限定理&#xff0c;对原始图像不断加高斯噪声&#xff0c;最终将原始信号破坏为近似的标准正态分布。这其中每一步都构造为条件高斯分布&#xff0c;形成离散的马尔科夫链。再通过逐步去噪得到原始图像。 Flow matching 采取…