TreeMap 的特点

2023-11-17

TreeMap基于红黑树实现,增删改查的平均和最差时间复杂度均为O,最大特点时Key有序。

key必须实现Comparable接口或者提供Comparator比较器,所以key不允许为null。

HashMap 依靠hashCode和equals去重,而TreeMap 依靠Comparable 或者Compartor。

TreeMap 排序时,如果比较器不为空就会优先使用比较器的Compare方法,否则使用key实现的。

Compareable的Compareto方法,两者都不满足会抛出异常。 TreeMap 通过put和deletEntry实现增加和删除树节点。插入新的节点的规则有三个:一是需要调整的新节点总是红点。插入新节点的父节点时黑色的,不需要调整。如果插入新节点的父节点时红色的,由于红黑树不能出现相邻红色、进入循环判断,通过重新这色或者对比调整。TreeNMap的插入操作就是按照Key的对比往下遍历,大于节点值向右查找,小于向左查找,先按照二叉查找的特性操作,后续会重新着色和旋转,保持红黑树的特性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TreeMap 的特点 的相关文章

  • 无法验证 Spring Security 中 url 模式的角色

    我正在使用 spring security 3 1 7 RELEASE 和 spring 3 2 13 RELEASE 我的 spring security xml 中有如下条目
  • 使用@Transactional注解批量插入

    在我的 Spring 应用程序中 我想一次性在数据库中插入近 1500 条记录 我在后端使用 Spring 4 X 和普通休眠 在我的服务层中 我使用 Transactional 注释 现在 在某个时间点之后插入记录时 我遇到内存不足错误
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • Spring Boot中ServletContext初始化后如何创建bean?

    我有一个 bean 它实现 ServletContextAware 和 BeanFactoryPostProcessor 接口 我需要在 ServletContext 完成初始化后将此 bean 注册到 applicationContext
  • 如何更改 Spring OAuth2 上的response_type

    这是我使用 Instagram 进行 OAuth2 登录的配置 instagram client clientId clientId clientSecret clientSeret accessTokenUri https api ins
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho
  • 使用 Spring 的 REST 多部分混合请求(文件+json)

    我需要将一个文件和一个 json 一起发送到我的 Spring 控制器 我有以下控制器类 Controller RequestMapping perform public class PerformController RequestMap
  • 使用 Spring 控制器处理错误 404

    I use ExceptionHandler处理我的网络应用程序抛出的异常 在我的例子中我的应用程序返回JSON回应HTTP status用于对客户端的错误响应 但是 我正在尝试弄清楚如何处理error 404返回与处理的类似的 JSON
  • 具有 JPA 持久性的 Spring 状态机 - 存储库使用

    我试图弄清楚如何轻松使用 Spring 状态机 包括使用 JPA 进行持久化 这是我正在处理的问题 不兼容的数据类型 工厂和持久性 在程序的某个时刻 我想使用连接到用户的状态机 有用于此目的的存储库 项目spring statemachin
  • 用于层次结构树角色的 Spring Security / Java EE 解决方案

    我知道 Spring Security 非常适合标准角色和基于权限的授权 我不确定的是这种情况 系统中管理着 10 000 名员工 员工被组织成组织结构图 跨部门的谁向谁报告的树 其中一些员工是用户 这些用户仅被允许访问其职责范围内的员工
  • 升级到 Spring boot 1.4 后服务无法启动

    我刚刚升级了所有 Spring Boot 服务1 3 6 RELEASE to 1 4 0 RELEASE 现在它们都在启动时崩溃 Caused by java lang NoClassDefFoundError org springfra
  • 在 Spring MVC 中定义 MessageSource 和 LocaleResolver bean 以添加 i18n 支持

    我正在尝试向 Spring MVC 项目 3 2 0 RELEASE 添加 i18n 支持 我在 src main resources bundle 下面有两个包 messageBundle en properties messageBun
  • 多线程Spring-boot控制器方法

    因此 我的应用程序 spring boot 运行速度非常慢 因为它使用 Selenium 来抓取数据 处理数据并显示在主页中 我遇到了多线程 我认为它对我的应用程序很有用 可以让它运行得更快 但是教程似乎显示在带有 main c 的普通 j
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • Grails transactionManager 运行时出现异常

    当编译一个grails v2 3 3项目运行项目时出现以下错误Netbeans 7 4 Loading Grails 2 3 3 Configuring classpath Configuring classpath Environment
  • 春季 CORS。在允许的来源中添加模式

    查看CORS的弹簧指南 以下代码启用所有允许的来源 public class MyWebMVCConfigurer extends WebMvcConfigurerAdapter Override public void addCorsMa
  • Java、Spring、Hibernate找不到org.springframework.orm.hibernate3.LocalSessionFactoryBean

    我正在尝试制作 spring hibernate ant 项目 目前我收到此错误 HTTP Status 500 type Exception report message description The server encountere

随机推荐

  • CMake Error: Maybe need administrative privileges.

    安装opencv时 到make install 这一步报错 解决 权限不够 前面加上sudo 即 sudo make install
  • qt中的QString::number()的精度使用问题

    1 QString number average f 5 这里的 f 表示的是 f 方式结果是0 00 所以后面的5表示的就是输出的时候保留5位小数 通常 QString str str QString number 23 34567899
  • 使用tp5内cache缓存,存储手机短信验证码

    设置手机短信验证码缓存方法 设置手机短信验证码缓存 User JW Email jw 333 163 com Date param data cache public function setRegSmsCache data cache C
  • Gitee API的使用|如何批量删除Gitee下的所有仓库

    前言 那么这里博主先安利一些干货满满的专栏了 首先是博主的高质量博客的汇总 这个专栏里面的博客 都是博主最最用心写的一部分 干货满满 希望对大家有帮助 高质量博客汇总https blog csdn net yu cblog category
  • python语音播报

    python3 pip install pyttsx3 python2 pip install pyttsx 文本转语音 import pyttsx3 import time str Come on Catherine engine pyt
  • java 强密码验证策略工具类

    java 强密码验证策略工具类 package com neusoft caeid common utils import java util regex Matcher import java util regex Pattern aut
  • ChatGPT论文考试满绩,高等教育该如何应对人工智能挑战?

    近日 ChatGPT引发热议 一方面 ChatGPT表现亮眼 有大学生利用ChatGPT在开卷课堂上取得满绩的优异成绩 另一方面 部分院校 学术期刊却对ChatGPT在高等教育领域的推进保持谨慎态度 甚至有高校明确禁止这项工具技术的使用 那
  • 算法题:Rod Cutting

    算法题 Rod Cutting 一 题目 二 代码 三 结果 一 题目 二 代码 lengths 1 1 3 4 lengths 5 4 4 2 2 8 def rodOffcut lengths resut resut append le
  • Android自定义控件--如何在XML文件中使用自定义属性

    前言 你好 我是Cici 这几天在做一个小项目的时候 用到了自定义控件 为了方便在XML中进行配置 于是需要用到自定义属性 特此记下用法 方便复习的同时也希望对大家有所帮助 一 为什么需要自定义控件 Android本身提供了很多控件 比如T
  • 1024 视频拼接

    题目描述 你将会获得一系列视频片段 这些片段来自于一项持续时长为 T 秒的体育赛事 这些片段可能有所重叠 也可能长度不一 视频片段 clips i 都用区间进行表示 开始于 clips i 0 并于 clips i 1 结束 我们甚至可以对
  • pyinstaller打包Transformers 报错No such file or directory

    问题描述 Traceback most recent call last File transformers utils import utils py line 1086 in get module File importlib init
  • Go开发者路线图2019,请收下这份指南

    Go是Google开发的一种静态 强类型 编译型 并发型 并具有垃圾回收功能的类C编程语言 2009以开源项目的形式发布 2012年发布1 0稳定版本 距今已经十年了 其性能类似于Java和C 但速度极快 适合搭载于web服务器 用于高性能
  • LeetCode1652. 拆炸弹

    题目描述 1652 拆炸弹 力扣 LeetCode 题目描述看的不是很清楚 直接看用例 这道题是简单题 取模 防止数组访问越界 C语言代码如下 int decrypt int code int codeSize int k int retu
  • 数据分桶

    数据分桶是一种数据预处理技术 用于减少次要观察误差的影响 是一种将多个连续值分组为较少数量的 桶 的方法 例如 例如我们有一组关于人年龄的数据 如下图所示 现在我们希望将他们的年龄分组到更少的间隔中 可以通过设置一些条件来实现 分桶的数据不
  • (Java)leetcode-945 Minimum Increment to Make Array Unique(使数组唯一的最小增量)

    题目描述 给定整数数组 A 每次 move 操作将会选择任意 A i 并将其递增 1 返回使 A 中的每个值都是唯一的最少操作次数 示例 1 输入 1 2 2 输出 1 解释 经过一次 move 操作 数组将变为 1 2 3 示例 2 输入
  • 在ubuntu上搭建文件服务器

    首先需要在ubuntu上下载好文件资源 一共是三个资源 在下载资源之前建议将git和nginx安装好 在本教程中将会用到 ngnix http nginx org download nginx 1 12 2 tar gz 利用winscp上
  • osg学习(五十一)Warning: detected OpenGL error ‘invalid operation‘ at after RenderBin::draw(..)

    原因是什么 这个错误只出现一次 并且是在第一帧时出现 Warning detected OpenGL error invalid operation after applying attribute Viewport 04292398 应该
  • 华为OD笔试题:工作安排 --- 100分 (思路+python代码)

    题目 小明每周上班都会拿到自己的工作清单 工作清单内包含n项工作 每项工作都有对应的耗时时长 单位h 和报酬 工作的总报酬为所有已完成工作的报酬之和 那么请你帮小明安排一下工作 保证小明在指定的工作时间内工作收入最大化 输入描述 输入的第一
  • 每天进步一点点——Linux中的线程局部存储(二)

    转载 http blog csdn net cywosp article details 26876231 在Linux中还有一种更为高效的线程局部存储方法 就是使用关键字 thread来定义变量 thread是GCC内置的线程局部存储设施
  • TreeMap 的特点

    TreeMap基于红黑树实现 增删改查的平均和最差时间复杂度均为O 最大特点时Key有序 key必须实现Comparable接口或者提供Comparator比较器 所以key不允许为null HashMap 依靠hashCode和equal