guava笔记9-Ranges

很多时候,我们需要表示一个数据范围,可能会这样传参数:

inScope(int min, int max, boolean minInclude, boolean maxInclude)

这样的代码看起来很繁琐。

Guava提供了一种数据结构叫做Range,正好用于表达这样一种数据。

 

Range提供了一些静态工厂方法,用于构造各种是否包含边界的范围:

Notation

Definition

Factory method

(a..b)

{x | a < x < b}

open

[a..b]

{x | a <= x <= b}

closed

(a..b]

{x | a < x <= b}

openClosed

[a..b)

{x | a <= x < b}

closedOpen

(a..+∞)

{x | x > a}

greaterThan

[a..+∞)

{x | x >= a}

atLeast

(-∞..b)

{x | x < b}

lessThan

(-∞..b]

{x | x <= b}

atMost

(-∞..+∞)

{x}

all

 
如:Range.openClosed(4,6) 就表示(4,6]这样的范围,其实包含数据5,6。

range的参数支持范型,这样任何实现Comparable的对象都能用于Range。

此外,Range也能通过参数指定是否包含边界:
range(C, BoundType, C, BoundType) : 如range(4, BoundType.CLOSE,6, BoundType.OPEN) 表示[4,6)
downTo(C, BoundType) 表示(a..+∞) or [a..+∞)
upTo(C, BoundType) 表示(-∞..b) or (-∞..b]

得到Range对象后,Range提供了一些方法来使用Range对象:
contains(c):判断是否包含数据c
containsAll(list):判断是否包含集合所有数据
hasLowerBound() and hasUpperBound(): 判断是否包含下边界及上边界
lowerBoundType() and upperBoundType() :返回边界包含类型(OPEN or CLOSED),如果没有边界将抛IllegalStateException
lowerEndpoint() and upperEndpoint() :返回边界值,如果没有边界将抛IllegalStateException
isEmpty() :是否是空范围,如(4,4]

集合处理:
Encloses:是否包含,如:[3..6] encloses [4..5],[4..5] does not enclose (3..6)
isConnected:两个范围是否是相邻的,如:[3,5]与(5,10)相邻,(0,9)与(5,10)相邻,(3,5)与(5,10)不相邻
Intersection:返回2个范围的交集。如果两个范围不相邻,抛IllegalArgumentException。
如:(3,5]与[5,10]的交集是[5,5];(0,9)和(3,4)的交集是(3,4)
Span: 返回包含2个范围的最小范围,如:(1, 5)和(6, 10)的span是(1,10)


Java List集合核心特性与性能优化全解析 List作为Java集合框架中最基础的有序集合接口,其基于动态数组或链表的实现原理决定了不同场景下的性能表现。从数据结构角度看,ArrayList的O(1)随机访问和LinkedList的O(1)增删操作体现了不同底层实现的特性差异。在工程实践中,合理的容量预设、批量操作API使用以及并发安全处理都是提升List性能的关键技术点。特别是在大数据量场景下,通过Java8 Stream API进行并行处理,或选择CopyOnWriteArrayList等线程安全实现,能有效解决实际开发中的性能瓶颈问题。本文通过 阅读详情

相关推荐

MFEA-II多因子进化优化:在线传递参数估计与Python实现

进化算法在多任务优化场景中常面临知识迁移强度难以把控的问题,传统多因子进化优化(MFEA)依赖固定交配概率,容易导致任务间相互干扰或信息共享不足。MFEA-II通过在线传递参数估计,动态评估任务相关性并自适应调整迁移强度,使不同任务在统一搜索空间内高效协同进化。该机制能够显著提升参数辨识、模型标定等工程问题的求解效率,尤其适合各工况模型结构相似但参数存在差异的场景。本文从MFEA-II的核心机制出发,讲解skill factor、factorial cost等关键概念,并给出轻量级Python实现思路与实际

weixin_34043301的博客 408

Guava学习笔记:Range

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34345753的博客 248

别再凭感觉选电容了!手把手教你计算电机控制器里的母线电容(附Excel计算工具)

本文详细解析了电机控制器中母线电容的选型方法,从理论计算到工程实践,帮助工程师避免常见误区。通过精确计算纹波电压、电容容量等关键参数,并结合薄膜电容与电解电容的性能对比,提供实用的选型建议。附带的Excel计算工具可快速完成参数计算,适用于工业伺服驱动和电动车电机控制器设计。

weixin_28720573的博客 518

深入解析Guava范围类(Range)

本文,咱们一起探索了Guava的Range类的各种强大功能和实际应用。从基本概念到高级技巧,再到实际案例,我希望这些内容能帮助大家更好地理解和使用Range,提高编程效率和代码质量。记住,编程不仅仅是写代码,更是一种艺术。使用像Range这样的工具,可以让我们的编程之路变得更加优雅和高效!

宋小黑的博客 1615

Linux下离线安装Google Chrome

目录背景一、下载并安装Google Chrome二、下载并安装依赖包1.libvulkan.so.1()(64bit)2.读入数据总结 背景 项目中服务器被要求不能连接外网,不能直接联网安装,所以需要下载Google Chrome安装包和依赖包,然后离线安装。 linux下步骤都一样,不管ubuntu还是centos只是需要下载对应系统的文件包即可。 本机系统:CentOS 7 一、下载并安装Google Chrome 官方下载地址http://www.google.cn/chrome/browser/d

ancientapesman的博客 1万+

GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

WIN32;_DEBUG;_CONSOLE;O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3。

qq_43381998的博客 8248

【Java】guava(三) Range类

关于Api之类的就不介绍了,贴一个例子: Range<Integer> a1 = Range.closed(0,1); System.out.println(a1); Range<Integer> a2 = Range.open(0,1); System.out.println(a2); R...

u010900754的专栏 6819

Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明

Utrust4701F与Utrust2700R读写器支持银河麒麟系统,广泛应用会员管理、支付管理等领域。本文将重点介绍Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明。以上方法适用于主流国产操作系统,如 优麒麟(UbuntuKylin)/ 中标麒麟(NeoKylin) / UOS(统信操作系统)/ 中兴新支点 / 红旗 linux(redflag linux)/ 普华 Linux(I-soft OS) / 威科乐恩 Linux(WiOS)等

华翔天诚科技 1833

Guava中RangeMap自定义range区间

RangeMap是一种集合类型,它将不相交、且不为空的Range(key)映射给一个值(Value),RangeMap不可以将相邻的区间合并,即使这个区间映射的值是一样的,实现RangeMap也是一个接口,实现它的也只有两个类,分别为mmutableRangeMap和TreeRangeMap。其中TreeRangeMap是key有序的。具体区间排序规则就不再说了。

晓风残月xj 5059

ERROR: Ignored the following yanked versions: 0.8.3, 0.10.19.dev18 的解决办法

关于这个问题,博主是在进行项目中的python依赖包安装的时候遇见的,遇到的异常:关于这个问题,是在。

Spring Boot-Common On With You 643

YOLOv8结合GhostNet实现轻量化目标检测:模型设计与性能评测

GhostNet系列的核心是**“幽灵特征图(Ghost Feature Map)”** 概念:通过简单的线性变换(如深度卷积)生成“幽灵特征”,这些特征与原始特征融合后,能以极低的计算成本带来丰富的语义信息。为了突出GhostNet系列的必要性,设计消融实验:分别测试“仅主卷积”“仅幽灵卷积”“GhostNet(主卷积+幽灵卷积)”三种方案的性能,用数据证明“幽灵特征”的不可替代性。简单来说,引入GhostNet系列的YOLOv8,既能体现你的技术深度,又能让毕设的“落地性”大幅提升。

m0_71589036的博客 116

Guava学习之RangeSet

前面谈到了Guava中新引入的Range类,也了解了其中的作用,那么今天来谈谈Guava中用到Range来的地方:RangeSet类。RangeSet类是用来存储一些不为空的也不相交的范围的数据结构。假如需要向RangeSet的对象中加入一个新的范围,那么任何相交的部分都会被合并起来,所有的空范围都会被忽略。  讲了这么多,我们该怎么样利用RangeSet?RangeSet类是一个接口,需要用它的

过往记忆大数据 5257

03 - AMDGPU驱动架构概览

本文介绍了AMDGPU驱动的整体架构,重点分析其图形驱动(AMDGPU)和计算驱动(KFD)的双重结构。KFD驱动作为HSA架构的核心组件,包含进程管理、设备管理等模块,其中SVM功能在kfd_svm.c实现。文章详细解析了KFD的核心组件、初始化流程及字符设备接口,并阐述了TTM框架在GPU内存管理中的作用。通过架构图和代码片段展示了AMDGPU与KFD的协作机制,为后续深入理解SVM实现奠定基础。

图形/计算GPU的驱动与虚拟化技术分享园地 3368

Guava——概述

1、概述1.1、Guava的优点1.2、Guava包介绍2、Guava 的使用2.1、引入2.2、基本工具 [Basic utilities]2.3、集合 [Collections]2.4、缓存 [Caches]2.5、函数式编程 [Functional idioms]2.6、并发 [Concurrency]2.7、字符串处理 [Strings]2.8、原生类型 [Primitives]2.9、区间 [Ranges]2.10、I/O2.11、散列 [Hash]2.12、事件总线 [EventBus]

吴声子夜歌的博客 207

【云原生技术】K8s 在拉取镜像时报错tls: failed to verify certificate: x509: certificate signed by unknown authority

原因 Kubernetes 节点在拉取镜像时会对 Harbor 的 HTTPS 证书做严格校验; 日志里的核心报错是: ``` tls: failed to verify certificate: x509: certificate signed by unknown authority ``` 说明 Harbor 返回的服务器证书要么是自签发,要么缺少在系统信任链里的根/中级 CA,节点因此拒绝连接。 你需要让 **所有负责拉镜像的节点(containerd 或 Docker 守护进程)

weixin_46453070的博客 2872

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring Boot+Vue全栈音乐网站实战:从零部署到核心模块解析

前后端分离架构是现代Web应用开发的主流模式,其核心原理是将用户界面(前端)与业务逻辑和数据(后端)解耦,通过RESTful API进行通信。这种架构的技术价值在于提升了开发效率、便于团队协作,并增强了应用的可维护性和可扩展性。在工程实践中,它广泛应用于各类管理系统、内容平台和社交应用。本文聚焦于一个典型的全栈实战项目——音乐网站,深入探讨了如何整合Spring Boot与Vue技术栈。项目涵盖了用户认证、多媒体处理等核心模块,并详细解析了JWT认证、Vuex状态管理等关键技术点的实现,为开发者提供了一个从

weixin_34416649的博客 283

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Google Guava 中文指南

温馨提示:Guava 中文指南的 GitHub 地址为 guava-guide,欢迎大家Star、Fork,纠错。 Guava 中文指南  Guava 项目包含若干被 Google 的 Java 项目依赖的核心类库,例如:集合、缓存、原生类型支持、并发库、通用注解、字符串处理、I/O 等等。Google 的开发者们每天都在使用这些工具进行项目的开发。但是查阅 Javadoc 并不总是最有效的学习这些

安正勋的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 311

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 571

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

26-下载中心按哈希分目录存文件

为解决大导出文件存储的扩展性与一致性问题,采用哈希分目录策略:以任务 key 前四位划分为两级子目录,结合安全文件名构建路径(如 a3/f9/a3f9c2e1..._orders.xlsx),实现文件分散存储。业务库仅保存任务状态与 key,下载中心通过内网接口接收文件流并管理持久化,支持无状态扩容。配合内存索引与定期清理作业,确保元数据与文件一致。该方案有效避免单目录膨胀、提升性能,并通过共享令牌控制访问,保障安全性。

CAthlete的博客 179

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 341

Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器

一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。

2601_94861874的博客 166

模拟实现 map 和 set —— 基于红黑树的复用设计

/ 三叉链,便于迭代器 -- / ++ 向上回溯T _data;Color _col;, _data(data), _col(RED) // 新结点默认红色{}设计决策目的收益模板参数T而非K, V让同一棵树同时容纳K和pair<K,V>一次实现,两处复用KeyOfT仿函数从T中抽出真正的 key 进行比较map 只以 key 排序,符合语义迭代器用nullptr表示 end结合"向祖先回溯"的++逻辑无需额外标记位,天然对齐Insert返回同时告知位置与是否新插。

2603_95728536的博客 502

【数据结构-2】顺序表的实现

线性表是一种数据结构,它分为逻辑结构和物理结构,在逻辑结构上线性表是呈线性的,数据是是连续存储的;在物理结构(物理空间)上,线性表不一定是连续存储的。线性表的实现,主要分为数组和链式结构。顺序表是线性表的一种实现方式,顺序表在逻辑结构和物理结构上都是连续的。顺序表的底层实现是数组。

weixin_44218929的博客 208
上一篇: guava笔记8-Primitives
下一篇: guava笔记7-Networking
leadtoit
博客等级 码龄17年 2粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值