java基于TreeMap或ConcurrentSkipListMap实现数据的范围查找

等值查找,有数组、列表、HashMap等,已经足够了,范围查找,该用什么数据结构呢?下面介绍java中非常好用的两个类TreeMap和ConcurrentSkipListMap。

TreeMap的实现基于红黑树

每一棵红黑树都是一颗二叉排序树,又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。

它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。

ConcurrentSkipListMap的实现基于跳表

跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。

它采用随机技术决定链表中哪些节点应增加向前指针以及在该节点中应增加多少个指针。跳表结构的头节点需有足够的指针域,以满足可能构造最大级数的需要,而尾节点不需要指针域。

采用这种随机技术,跳表中的搜索、插入、删除操作的时间均为O(logn),然而,最坏情况下时间复杂性却变成O(n)。相比之下,在一个有序数组或链表中进行插入/删除操作的时间为O(n),最坏情况下为O(n)。

范围查找代码

Original: https://www.cnblogs.com/hdwang/p/16412551.html
Author: 追极
Title: java基于TreeMap或ConcurrentSkipListMap实现数据的范围查找

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/587765/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 随机数计算法比较,更好的随机数对于程序是否真的值得。

    下面是他们时间表现 名称 生成 个随机数耗时(ms) 库函数rand耗时 8634 mt19937 8176 xorshift32耗时 6724 modrand耗时 6116 算法…

    数据结构和算法 2023年6月7日
    065
  • CF1691F 题解

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据结构和算法 2023年6月12日
    078
  • 大顶堆MaxHeap(原理与Java实现)

    1. 为什么要引入堆? 1.1 堆的应用场景 有时候我们面临一种实际应用场景需要根据任务的重要程度而划分优先级,对优先级高的任务提供优先服务。 优先级队列(Priority Que…

    数据结构和算法 2023年6月16日
    0122
  • KOF 拳皇

    2022/6/21初代更新; 版本1.0 git 地址 目前只有一个人物且不可选择,之后会加入背景音乐,几大声音等,其仓库地址与球球大作战地址相同,之后会更新到服务器端,可在线匹配…

    数据结构和算法 2023年6月12日
    077
  • 利用逻辑回归进行简单的人群分类解决广告推荐问题

    一、什么是逻辑回归? 逻辑回归又称对数几率回归是离散选择法模型之一,逻辑回归是一种用于解决监督学习问题的学习算法,进行逻辑回归的目的是使训练数据的标签值与预测出来的值之间的误差最小…

    数据结构和算法 2023年6月8日
    088
  • LeetCode最长快乐字符串使用JavaScript解算法

    LeetCode最长快乐字符串使用JavaScript解算法 前端学习算法,使用JavaScript破解LeetCode最长快乐字符串 有人相爱,有人夜里开车看海,我是leetco…

    数据结构和算法 2023年6月8日
    078
  • CSP-S初赛知识点(持久更新)

    先更新这么多,以后再说吧AK IOI 算法名称 平均复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性 冒泡排序 In_place 稳定 选择排序 In_place 不稳定 …

    数据结构和算法 2023年6月7日
    084
  • LeetCode-整数反转

    题目信息 给你一个 32 位的有符号整数 x,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31,&…

    数据结构和算法 2023年6月8日
    078
  • 背包问题(上)

    2. 01背包问题 有 (N) 件物品和一个容量是 (V) 的背包。每件物品只能使用一次。第 (i) 件物品的体积是 (v_i),价值是 (w_i)。求解将哪些物品装入背包,可使这…

    数据结构和算法 2023年6月8日
    085
  • CF 793 div2

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据结构和算法 2023年6月12日
    054
  • 每日代码系列(14)

    1 class PersonA { 2 private String name; 3 public void setName(String newName) { 4 name=ne…

    数据结构和算法 2023年6月7日
    0127
  • Nodejs处理Json文件并将处理后的数据写入新文件

    问题描述 事情是这样的,朋友让我处理一个json文件并将处理后的数据写入新文件。这个json文件的结构如下: [ { "head_img": "htt…

    数据结构和算法 2023年6月8日
    059
  • 滑动窗口

    前言 写下这篇文章的原因主要是本人在力扣86场双周赛碰到的第四题,以为是dp,但其实是滑动窗口进行求解,以下特此记录一下滑动窗口的几种常见题型,也可以作为今后复习用的题单。 滑动窗…

    数据结构和算法 2023年6月8日
    0112
  • P5934 [清华集训2012]最小生成树

    简要题意 给你一个 (N) 个点,(M) 条边的 无向连通 带权图。给定一条边 ((u,v,L)),请问需要在原图中删除多少条边,使得将 ((u,v,L)) 插入图后,它既可能在最…

    数据结构和算法 2023年6月12日
    091
  • MyBatis笔记

    MyBatis MyBatis特性 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及…

    数据结构和算法 2023年6月7日
    080
  • 集合幂级数相关

    CHANGE LOG NOI 大纲里没有把位运算卷积如 FMT,FWT,子集卷积等知识点单独列出,但高维前缀和(SOSDP)是应用比较广泛的重要算法。 学习上述算法,首先要理解什么…

    数据结构和算法 2023年6月12日
    0100
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球