博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava API学习之Range
阅读量:4150 次
发布时间:2019-05-25

本文共 744 字,大约阅读时间需要 2 分钟。

 

      在中新增了一个新的类型,从名字就可以了解到,这个是和区间有关的数据结构。从官方文档可以得到定义:定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比 如1到100之间的整型数据。不过我们无法遍历出这个区间里面的值。如果需要达到这个目的,我们可以将这个范围传给 ContiguousSet.create(com.google.common.collect.Range, com.google.common.collect.DiscreteDomain).来达到遍历这个范围里面的值。

  我们知道,在数学里面的范围是有边界和无边界之分的;同样,在中也有这个说法。如果这个范围是有边界的,那么这个范围又可以分为包括开集(不包括端点)和闭集(包括端点);如果是无解的可以用+∞表示。如果枚举的话,一共有九种范围表示:

 

Guava Range

上表中的功能函数那一栏表示Range类提供的函数,分别来表示九种可能出现的范围区间。如果区间两边都存在范围,在这种情况下,区间右边的数不可能比区间左边的数小。在极端情况下,区间两边的数是相等的,但前提条件是最少有一个边界是闭集的,否则是不成立的。比如:

 

[a..a] : 里面只有一个数a;[a..a); (a..a] : 空的区间范围,但是是有效的;(a..a) : 这种情况是无效的,构造这样的Range将会抛出异常。

 在使用Range时需要注意:

 

 

  1. 在构造区间时,尽量使用不可改变的类型。如果你需要使用可变的类型,在区间类型构造完成的情况下,请不要改变区间两边的数;
  2. 一个实现了Comparable接口的类传进Range将会发生未定义的情况;目前Range API还没有阻止这种用法,但是未来可能会改变。

转载地址:http://mplti.baihongyu.com/

你可能感兴趣的文章
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>
Qt文件夹选择对话框
查看>>
DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
查看>>
Python-OpenCV人脸检测(代码)
查看>>
python+opencv之视频人脸识别
查看>>