guava包Range操作

Range代表一个区间,它有上限和下限。

比如[1,10],它的意思是这个区间包含大于等于1和小于等于10的所有数。

开区间用中括号标识,闭区间用小括号标识。以下是区间在数学上的定义

(a..b) = {x | a < x < b}
[a..b] = {x | a <= x <= b}
[a..b) = {x | a <= x < b}
(a..b] = {x | a < x <= b}
(a..+∞) = {x | x > a}
[a..+∞) = {x | x >= a}
(-∞..b) = {x | x < b}
(-∞..b] = {x | x <= b}
(-∞..+∞) = all values

对应区间,guava专门提供了一个Range类来标识,对应于数学上的概念,它有如下方法。

Range typeMethod
(a..b) open(C, C)
[a..b] closed(C, C)
[a..b) closedOpen(C, C)
(a..b] openClosed(C, C)
(a..+∞) greaterThan(C)
[a..+∞) atLeast(C)
(-∞..b) lessThan(C)
(-∞..b] atMost(C)
(-∞..+∞) all()

区间常用操作

Range.closed(1, 3).contains(2); // returns true
Range.closed(1, 3).contains(4); // returns false
Range.lessThan(5).contains(5); // returns false
Range.closed(1, 4).containsAll(Ints.asList(1, 2, 3)); // retu

其他操作

Range.closedOpen(4, 4).isEmpty(); // returns true
Range.openClosed(4, 4).isEmpty(); // returns true
Range.closed(4, 4).isEmpty(); // returns false
Range.open(4, 4).isEmpty(); // Range.open throws IllegalArgumentException

Range.closed(3, 10).lowerEndpoint(); // returns 3
Range.open(3, 10).lowerEndpoint(); // returns 3
Range.closed(3, 10).lowerBoundType(); // returns CLOSED
Range.open(3, 10).upperBoundType(); // returns OPEN

区间直接还可以进行是否包含、交集、并集、是否连接等操作。

有需要了解的key直接看官方文档。这里就不多复述了。

posted @ 2022-02-11 10:20  Mars.wang  阅读(482)  评论(0编辑  收藏  举报